وتلخيصا
مع إضافة المعلمات الموضعية ، يمكننا الآن كتابة نصوص وظيفية إلى حد ما. بالنسبة للمهام البسيطة المتكررة ، تتيح المعلمات الموضعية كتابة وظائف صدفة مفيدة جدًا يمكن وضعها في حساب المستخدم .bashrc ملف.
الأهداف و sys_info_page لقد نما البرنامج من حيث التعقيد والتطور. فيما يلي قائمة كاملة ، مع إبراز أحدث التغييرات:
#! / بن / باش
# sys_info_page: برنامج لإخراج صفحة معلومات النظام
PROGNAME = $ (basename $ 0)
TITLE = "تقرير معلومات النظام لـ $ HOSTNAME" CURRENT_TIME = $ (التاريخ + "٪ x٪ r٪ Z")
TIMESTAMP = "تم توليده $ CURRENT_TIME ، بواسطة $ USER"
report_uptime () {قطة << - _EOF_
جاهزية النظام
$ (الجهوزية)
_EOF_ عودة
#! / بن / باش
# sys_info_page: برنامج لإخراج صفحة معلومات النظام
PROGNAME = $ (basename $ 0)
TITLE = "تقرير معلومات النظام لـ $ HOSTNAME" CURRENT_TIME = $ (التاريخ + "٪ x٪ r٪ Z")
TIMESTAMP = "تم توليده $ CURRENT_TIME ، بواسطة $ USER"
report_uptime () {قطة << - _EOF_
جاهزية النظام
$ (الجهوزية)
_EOF_ عودة
}
report_disk_space () {cat << - _EOF_
استخدام مساحة القرص
$ (df -h)
_EOF_ عودة
}
Report_home_space () {
إذا [[$ (id -u) -eq 0]]؛ ثم القط << - _EOF_
استخدام مساحة المنزل (كل المستخدمين)
$ (du -sh / home / *)
_EOF_
آخر
قطة << - _EOF_
استخدام المساحات المنزلية ($ USER)
$ (du -sh $ HOME)
_EOF_
عودة fi
}
الاستخدام () {
صدى "$ PROGNAME: الاستخدام: إرجاع $ PROGNAME [-f file | -i]"
}
write_html_page () {cat << - _EOF_
العنوان $
العنوان $
TIMESTAMP دولار
$ (report_uptime)
$ (report_disk_space)
$ (report_home_space)
_EOF_ عودة
}
# خيارات سطر الأوامر العملية
}
report_disk_space () {cat << - _EOF_
استخدام مساحة القرص
$ (df -h)
_EOF_ عودة
}
Report_home_space () {
إذا [[$ (id -u) -eq 0]]؛ ثم القط << - _EOF_
استخدام مساحة المنزل (كل المستخدمين)
$ (du -sh / home / *)
_EOF_
آخر
قطة << - _EOF_
استخدام المساحات المنزلية ($ USER)
$ (du -sh $ HOME)
_EOF_
عودة fi
}
الاستخدام () {
صدى "$ PROGNAME: الاستخدام: إرجاع $ PROGNAME [-f file | -i]"
}
write_html_page () {cat << - _EOF_
العنوان $
العنوان $
TIMESTAMP دولار
$ (report_uptime)
$ (report_disk_space)
$ (report_home_space)
_EOF_ عودة
}
# خيارات سطر الأوامر العملية
وتلخيصا
تفاعلي =
اسم الملف =
بينما [[-n $ 1]] ؛ فعل حالة $ 1 في
-f | --ملف)
نقل
اسم الملف = 1 دولار
;;
تفاعلي =
اسم الملف =
بينما [[-n $ 1]] ؛ فعل حالة $ 1 في
-f | --ملف)
-i | - تفاعلي) تفاعلي = 1
;;
-ح | --مساعدة) الخروج من الاستخدام
;;
*) الاستخدام> & 2
خروج 1
;;
تحول esac
فعل
# الوضع التفاعلي
إذا [[-n $ Interactive]]؛ ثم بينما صحيح فعل
read -p "أدخل اسم ملف الإخراج:" filename if [[-e $ filename]]؛ من ثم
read -p "'$ filename' موجود. هل تريد الكتابة فوقه؟ [y / n / q]>" case $ REPLY في
ص | ص) فاصل
;;
س | ف) صدى "تم إنهاء البرنامج". خروج
;;
*) استمر
;;
ESAC
إليف [[-z $ filename]] ؛ ثم تابع
آخر
استراحة
fi
فعل
fi
# إخراج صفحة أتش تي أم أل
إذا [[-n $ filename]] ؛ من ثم
إذا المس $ filename && [[-f $ filename]]؛ ثم write_html_page> $ filename
آخر
-i | - تفاعلي) تفاعلي = 1
;;
-ح | --مساعدة) الخروج من الاستخدام
;;
*) الاستخدام> & 2
خروج 1
;;
تحول esac
فعل
# الوضع التفاعلي
إذا [[-n $ Interactive]]؛ ثم بينما صحيح فعل
read -p "أدخل اسم ملف الإخراج:" filename if [[-e $ filename]]؛ من ثم
read -p "'$ filename' موجود. هل تريد الكتابة فوقه؟ [y / n / q]>" case $ REPLY في
ص | ص) فاصل
;;
س | ف) صدى "تم إنهاء البرنامج". خروج
;;
*) استمر
;;
ESAC
إليف [[-z $ filename]] ؛ ثم تابع
آخر
استراحة
fi
فعل
fi
# إخراج صفحة أتش تي أم أل
إذا [[-n $ filename]] ؛ من ثم
إذا المس $ filename && [[-f $ filename]]؛ ثم write_html_page> $ filename
آخر
صدى "$ PROGNAME: لا يمكن كتابة الملف '$ filename'"> & 2 exit 1
فاي آخر
write_html_page
fi
صدى "$ PROGNAME: لا يمكن كتابة الملف '$ filename'"> & 2 exit 1
فاي آخر
write_html_page
fi
لم ننتهي بعد. لا يزال هناك المزيد من الأشياء التي يمكننا القيام بها والتحسينات التي يمكننا إجراؤها.