می‌خواهیم یک برنامه ساده برای مدیریت task بنویسیم. برای این کار از شما می‌خواهیم یک اسکریپت Bash با نام task.sh بنویسید. می‌توانید با پیاده‌سازی بخشی از خواسته‌ها، بخشی از نمره را بگیرید.

جزئیات

هر task یکی از ۳ اولویت پایین (L)، متوسط (M) و بالا (H) را دارد.

لیست task ها در فایل متنی tasks.txt ذخیره می‌شود. ممکن است هنگام اجرا، این فایل وجود نداشته باشد. در این صورت برنامه شما باید آن را ایجاد کند. در هر سطر از این فایل یک task به این صورت ذخیره می‌شود: ابتدا اولویت (یکی از حروف H, M, L)، سپس یک کاراکتر فاصله و سپس عنوان task می‌آید.

شماره task ها بر اساس ترتیب آن‌ها در این فایل مشخص می‌شود. اولین سطر این فایل task شماره ۱ است.

یک مثال:

L Plan for summer
M Prepare presentation (important)

اسکریپت باید توانایی اجرای دستورات add, list, done را به صورت زیر داشته باشد:

$ bash task.sh add <task_title>
$ bash task.sh list
$ bash task.sh done <task_number>

در ادامه توضیح دقیق هریک از این دستورات آمده است. در انتهای متن نیز مثالی آمده که همه چیز را روشن‌تر می‌کند.

دستور add

این دستور، task با عنوان داده‌شده را به انتهای لیست اضافه می‌کند.

در صورتی که در انتهای عنوان، عبارت (important) یا (very important) باشد (بدون توجه به بزرگی و کوچکی حروف)، اولویت به ترتیب M و H خواهد بود. در غیر این صورت اولویت L است.

پس از اضافه کردن، باید پیام زیر در خروجی استاندارد نوشته شود:

Added task <task_number> with priority <task_priority>

دستور list

این دستور لیست task ها را مانند مثال‌های زیر نمایش می‌دهد.

$ bash task.sh list
1 *     Plan for summer
2 ***** Fix bug #73 (very important)
3 ***   Prepare presentation (Important)
$ bash task.sh list
1 *     Write a letter

برای اولویت پایین، ۱ ستاره، برای اولویت متوسط ۳ ستاره و برای اولویت بالا ۵ ستاره نمایش داده می‌شود. به فاصله‌های هر خط توجه کنید.

در صورت خالی بودن لیست، عبارت No tasks found... را در خروجی استاندارد بنویسید.

دستور done

این دستور task با شماره‌ی داده شده را حذف می‌کند و پیام زیر را در خروجی استاندارد می‌نویسد:

Completed task <task_number>: <task_title>

پیام‌های خطا

در صورتی که دستوری به جز دستورهای بالا داده شد، برنامه باید با کد ۱ خارج شود و پیام خطای زیر را در stderr بنویسد:

[Error] Invalid command

همچنین اگر در ادامه‌ی دستورهای add و done هیچ آرگومانی داده نشد، برنامه باید با کد ۱ خارج شود و این پیام را در stderr بنویسد:

[Error] This command needs an argument

مثال

نمونه‌ای از عملکرد اسکریپت را در زیر می‌بینید:

$ bash task.sh hello
[Error] Invalid command

$ bash task.sh add
[Error] This command needs an argument

$ bash task.sh list
No tasks found...

$ bash task.sh add Plan for summer
Added task 1 with priority L

$ bash task.sh add Buy CLRS book
Added task 2 with priority L

$ bash task.sh add "Fix bug #73 (very important)"
Added task 3 with priority H

$ bash task.sh add Prepare presentation "(Important)"
Added task 4 with priority M

$ bash task.sh list
1 *     Plan for summer
2 *     Buy CLRS book
3 ***** Fix bug #73 (very important)
4 ***   Prepare presentation (Important)

$ bash task.sh done 2
Completed task 2: Buy CLRS book

$ bash task.sh list
1 *     Plan for summer
2 ***** Fix bug #73 (very important)
3 ***   Prepare presentation (Important)

$ bash task.sh done 2
Completed task 2: Fix bug #73 (very important)

$ bash task.sh list
1 *     Plan for summer
2 ***   Prepare presentation (Important)

نکات

  • یک فایل Zip شامل اسکریپت task.sh را آپلود کنید.
ارسال پاسخ برای این سؤال
فایلی انتخاب نشده است.