توضیحات تکمیلی مربوط به مسابقه را در بلاگ Quera بخوانید: blog.quera.ir

لینوکس - مدیریت کارها


می‌خواهیم یک برنامه ساده برای مدیریت 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)
Plain text

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

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

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

دستور add🔗

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

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

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

Added task <task_number> with priority <task_priority>
Plain text

دستور list🔗

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

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

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

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

دستور done🔗

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

Completed task <task_number>: <task_title>
Plain text

پیام‌های خطا🔗

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

[Error] Invalid command
Plain text

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

[Error] This command needs an argument
Plain text

مثال🔗

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

$ 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)
Plain text

نکات🔗

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