جمعبندی
با افزودن پارامترهای موقعیتی، اکنون می توانیم اسکریپت های نسبتاً کاربردی بنویسیم. برای کارهای ساده و تکراری، پارامترهای موقعیتی امکان نوشتن توابع پوسته بسیار مفیدی را فراهم میکنند که میتوانند در یک کاربر قرار گیرند. .bashrc فایل.
sys_info_page برنامه در پیچیدگی و پیچیدگی رشد کرده است. در اینجا یک لیست کامل است که جدیدترین تغییرات برجسته شده است:
#! / bin / bash
# sys_info_page: برنامه ای برای خروجی صفحه اطلاعات سیستم
PROGNAME=$(نام پایه $0)
TITLE="گزارش اطلاعات سیستم برای $HOSTNAME" CURRENT_TIME=$(تاریخ +"%x %r %Z")
TIMESTAMP="تولید $CURRENT_TIME توسط $USER"
report_uptime () { cat <<- _EOF_
آپ تایم سیستم
$(زمان آپدیت)
_EOF_ بازگشت
#! / bin / bash
# sys_info_page: برنامه ای برای خروجی صفحه اطلاعات سیستم
PROGNAME=$(نام پایه $0)
TITLE="گزارش اطلاعات سیستم برای $HOSTNAME" CURRENT_TIME=$(تاریخ +"%x %r %Z")
TIMESTAMP="تولید $CURRENT_TIME توسط $USER"
report_uptime () { cat <<- _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 فایل | -i]" بازگشت
}
write_html_page () { cat <<- _EOF_
$TITLE
$TITLE
$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 فایل | -i]" بازگشت
}
write_html_page () { cat <<- _EOF_
$TITLE
$TITLE
$TIMESTAMP
$(report_uptime)
$(report_disk_space)
$(report_home_space)
_EOF_ بازگشت
}
# گزینه های خط فرمان را پردازش کنید
جمعبندی
تعاملی =
نام فایل =
در حالی که [[ -n $1 ]]; مورد 1 دلار را انجام دهید
-f | --فایل)
تغییر
نام فایل = $1
;;
تعاملی =
نام فایل =
در حالی که [[ -n $1 ]]; مورد 1 دلار را انجام دهید
-f | --فایل)
-i | --interactive) interactive=1
;;
-h | --help) خروج از استفاده
;;
*) استفاده >&2
خروج 1
;;
اساک شیفت
انجام شده
# حالت تعاملی
اگر [[ -n $interactive ]]; سپس در حالی که درست است. انجام دادن
read -p "نام فایل خروجی را وارد کنید: " نام فایل اگر [[ -e $filename ]]; سپس
read -p "'$filename' وجود دارد. بازنویسی شود؟ [y/n/q] > " case $REPLY در
Y|Y) شکستن
;;
Q|q) echo "برنامه پایان یافت." خروج
;;
*) ادامه هید
;;
که C
elif [[ -z $filename ]]; سپس ادامه دهید
دیگر
شکستن
fi
انجام شده
fi
# خروجی صفحه html
اگر [[ -n $filename ]]; سپس
اگر $filename && [[ -f $filename ]] را لمس کنید. سپس write_html_page > $filename
دیگر
-i | --interactive) interactive=1
;;
-h | --help) خروج از استفاده
;;
*) استفاده >&2
خروج 1
;;
اساک شیفت
انجام شده
# حالت تعاملی
اگر [[ -n $interactive ]]; سپس در حالی که درست است. انجام دادن
read -p "نام فایل خروجی را وارد کنید: " نام فایل اگر [[ -e $filename ]]; سپس
read -p "'$filename' وجود دارد. بازنویسی شود؟ [y/n/q] > " case $REPLY در
Y|Y) شکستن
;;
Q|q) echo "برنامه پایان یافت." خروج
;;
*) ادامه هید
;;
که C
elif [[ -z $filename ]]; سپس ادامه دهید
دیگر
شکستن
fi
انجام شده
fi
# خروجی صفحه html
اگر [[ -n $filename ]]; سپس
اگر $filename && [[ -f $filename ]] را لمس کنید. سپس write_html_page > $filename
دیگر
echo "$PROGNAME: نمی توان فایل "$filename" را نوشت" >&2 خروج 1
فی دیگری
write_html_page
fi
echo "$PROGNAME: نمی توان فایل "$filename" را نوشت" >&2 خروج 1
فی دیگری
write_html_page
fi
ما هنوز تمام نشده ایم. هنوز کارهای بیشتری وجود دارد که میتوانیم انجام دهیم و پیشرفتهایی که میتوانیم انجام دهیم.