OnWorks Linux و Windows Online WorkStations

الشعار

استضافة مجانية على الإنترنت لمحطات العمل

<السابق | المحتويات | التالي>

تطبيق أكثر اكتمالا

بعد فترة توقف طويلة ، سنستأنف العمل في sys_info_page برنامج. ستضيف إضافتنا التالية العديد من خيارات سطر الأوامر إلى البرنامج على النحو التالي:

ملف إلاخراج. سنضيف خيارًا لتحديد اسم لملف ليحتوي على مخرجات البرنامج. سيتم تحديده على أنه إما -f ملف or --ملف ملف.

الوضع التفاعلي. سيطلب هذا الخيار من المستخدم إدخال اسم ملف الإخراج وسيحدد ما إذا كان الملف المحدد موجودًا بالفعل. إذا حدث ذلك ، فستتم مطالبة المستخدم قبل الكتابة فوق الملف الحالي. سيتم تحديد هذا الخيار من قبل أي منهما -i or - تفاعلي.

مساعدة. كل -h or --مساعدة قد يتم تحديده لجعل البرنامج يخرج رسالة استخدام إعلامية.

إليك الكود المطلوب لتنفيذ معالجة سطر الأوامر:



الاستخدام () {

صدى "$ PROGNAME: الاستخدام: إرجاع $ PROGNAME [-f file | -i]"

}

# خيارات سطر أوامر العملية التفاعلية =

الاستخدام () {

صدى "$ PROGNAME: الاستخدام: إرجاع $ PROGNAME [-f file | -i]"

}

# خيارات سطر أوامر العملية التفاعلية =


اسم الملف =


بينما [[-n $ 1]] ؛ فعل حالة $ 1 في

-f | --ملف)

نقل

اسم الملف = 1 دولار

;;

اسم الملف =


بينما [[-n $ 1]] ؛ فعل حالة $ 1 في

-f | --ملف)


-i | - تفاعلي) تفاعلي = 1

;;

-ح | --مساعدة) الخروج من الاستخدام

;;

*) الاستخدام> & 2

خروج 1

;;

-i | - تفاعلي) تفاعلي = 1

;;

-ح | --مساعدة) الخروج من الاستخدام

;;

*) الاستخدام> & 2

خروج 1

;;


ESAC

تم التحول

ESAC

تم التحول


صورة

أولاً ، نضيف دالة صدفة تسمى استعمال لعرض رسالة عند استدعاء خيار المساعدة أو محاولة خيار غير معروف.

بعد ذلك ، نبدأ حلقة المعالجة. تستمر هذه الحلقة بينما المعلمة الموضعية

$ 1 ليس فارغًا. في نهاية الحلقة ، لدينا أمر shift لتقديم المعلمات الموضعية لضمان أن الحلقة ستنتهي في النهاية.

داخل الحلقة ، لدينا ملف حقيبة عبارة تفحص المعلمة الموضعية الحالية لمعرفة ما إذا كانت تتطابق مع أي من الخيارات المدعومة. إذا تم العثور على معلمة مدعومة ، فسيتم التصرف بناءً عليها. إذا كان خيار غير معروف هو الخيار غير المعروف ، فسيتم عرض رسالة الاستخدام وينتهي البرنامج النصي بخطأ.

-f يتم التعامل مع المعلمة بطريقة مثيرة للاهتمام. عندما يتم الكشف عنها ، فإنه يسبب عنصرًا إضافيًا نقل لتحدث ، مما يؤدي إلى تقدم المعلمة الموضعية $1 إلى وسيطة اسم الملف التي تم توفيرها لملف -f الخيار.

نضيف بعد ذلك الكود لتنفيذ الوضع التفاعلي:



# الوضع التفاعلي


إذا [[-n $ Interactive]]؛ ثم بينما صحيح فعل

read -p "أدخل اسم ملف الإخراج:" filename if [[-e $ filename]]؛ من ثم

read -p "'$ filename' موجود. هل تريد الكتابة فوقه؟ [y / n / q]>" case $ REPLY في

ص | ص) فاصل

# الوضع التفاعلي


إذا [[-n $ Interactive]]؛ ثم بينما صحيح فعل

read -p "أدخل اسم ملف الإخراج:" filename if [[-e $ filename]]؛ من ثم

read -p "'$ filename' موجود. هل تريد الكتابة فوقه؟ [y / n / q]>" case $ REPLY في

ص | ص) فاصل


;;

س | ف) صدى "تم إنهاء البرنامج". خروج

;;

*) استمر

;;

ESAC

إليف [[-z $ filename]] ؛ ثم تابع

آخر

استراحة

fi

فعل

fi

;;

س | ف) صدى "تم إنهاء البرنامج". خروج

;;

*) استمر

;;

ESAC

إليف [[-z $ filename]] ؛ ثم تابع

آخر

استراحة

fi

فعل

fi


إذا كان التفاعلية المتغير ليس فارغًا ، يتم تشغيل حلقة لا نهاية لها ، والتي تحتوي على موجه اسم الملف وما تلاه من كود معالجة الملف الموجود. إذا كان ملف الإخراج المطلوب موجودًا بالفعل ، تتم مطالبة المستخدم بالكتابة فوق أو اختيار اسم ملف آخر أو إنهاء البرنامج. إذا اختار المستخدم الكتابة فوق ملف موجود ، فإن ملف استراحة يتم تنفيذه لإنهاء الحلقة. لاحظ كيف أن ملف حقيبة يكتشف البيان فقط إذا اختار المستخدم الإفراط في الكتابة أو الإقلاع عن التدخين. يؤدي أي خيار آخر إلى استمرار الحلقة ويطالب المستخدم مرة أخرى.

من أجل تنفيذ ميزة اسم الملف الناتج ، يجب علينا أولاً تحويل كود كتابة الصفحة الحالي إلى دالة صدفة ، لأسباب ستتضح بعد قليل:



write_html_page () {cat << - _EOF_

العنوان $

العنوان $

TIMESTAMP دولار

$ (report_uptime)

$ (report_disk_space)

$ (report_home_space)

_EOF_ عودة

}


# إخراج صفحة أتش تي أم أل


إذا [[-n $ filename]] ؛ من ثم

write_html_page () {cat << - _EOF_

العنوان $

العنوان $

TIMESTAMP دولار

$ (report_uptime)

$ (report_disk_space)

$ (report_home_space)

_EOF_ عودة

}


# إخراج صفحة أتش تي أم أل


إذا [[-n $ filename]] ؛ من ثم


إذا المس $ filename && [[-f $ filename]]؛ ثم write_html_page> $ filename

آخر

صدى "$ PROGNAME: لا يمكن كتابة الملف '$ filename'"> & 2 exit 1

فاي آخر

write_html_page

fi

إذا المس $ filename && [[-f $ filename]]؛ ثم write_html_page> $ filename

آخر

صدى "$ PROGNAME: لا يمكن كتابة الملف '$ filename'"> & 2 exit 1

فاي آخر

write_html_page

fi


الكود الذي يتعامل مع منطق -f يظهر الخيار في نهاية القائمة الموضحة أعلاه. في ذلك ، نقوم باختبار وجود اسم ملف ، وإذا تم العثور عليه ، يتم تكوين اختبار لمعرفة ما إذا كان الملف قابل للكتابة بالفعل. للقيام بذلك ، أ تواصل متبوعًا باختبار لتحديد ما إذا كان الملف الناتج عبارة عن ملف عادي. يعتني هذان الاختباران بالمواقع التي يتم فيها إدخال اسم مسار غير صالح (تواصل سوف تفشل) ، وإذا كان الملف موجودًا بالفعل ، فسيكون ملفًا عاديًا.

كما نرى ، فإن write_html_page يتم استدعاء الوظيفة لإجراء الإنشاء الفعلي للصفحة. يتم توجيه ناتجها إما إلى الإخراج القياسي (إذا كان المتغير اسم الملف فارغ) أو تمت إعادة توجيهه إلى الملف المحدد.


أفضل الحوسبة السحابية لنظام التشغيل في OnWorks: