<ก่อนหน้านี้ | เนื้อหา | ถัดไป>
ข้อสรุปขึ้น
ด้วยการเพิ่มพารามิเตอร์ตำแหน่ง ตอนนี้เราสามารถเขียนสคริปต์ที่ใช้งานได้จริง สำหรับงานที่เรียบง่ายและซ้ำซากจำเจ พารามิเตอร์ตำแหน่งทำให้สามารถเขียนฟังก์ชันเชลล์ที่มีประโยชน์มาก ซึ่งสามารถวางไว้ใน .bashrc ไฟล์
Our sys_info_page โปรแกรมได้เติบโตขึ้นในความซับซ้อนและความซับซ้อน นี่คือรายชื่อทั้งหมด โดยเน้นการเปลี่ยนแปลงล่าสุด:
#! / bin / ทุบตี
# sys_info_page: โปรแกรมสำหรับส่งออกหน้าข้อมูลระบบ
PROGNAME=$(ชื่อฐาน$0)
TITLE="รายงานข้อมูลระบบสำหรับ $HOSTNAME" CURRENT_TIME=$(date +"%x %r %Z")
TIMESTAMP="สร้าง $CURRENT_TIME โดย $USER"
report_uptime () { แมว <<- _EOF_
เวลาทำงานของระบบ
$(เวลาทำงาน)
_EOF_ กลับมา
#! / bin / ทุบตี
# sys_info_page: โปรแกรมสำหรับส่งออกหน้าข้อมูลระบบ
PROGNAME=$(ชื่อฐาน$0)
TITLE="รายงานข้อมูลระบบสำหรับ $HOSTNAME" CURRENT_TIME=$(date +"%x %r %Z")
TIMESTAMP="สร้าง $CURRENT_TIME โดย $USER"
report_uptime () { แมว <<- _EOF_
เวลาทำงานของระบบ
$(เวลาทำงาน)
_EOF_ กลับมา
}
report_disk_space () { แมว <<- _EOF_
การใช้พื้นที่ดิสก์
$(df -h)
_EOF_ กลับมา
}
report_home_space () {
ถ้า [[ $(id -u) -eq 0 ]]; แล้วก็แมว <<- _EOF_
การใช้พื้นที่ในบ้าน (ผู้ใช้ทั้งหมด)
$(du -sh /home/*)
_อีโอเอฟ_
อื่น
แมว <<- _EOF_
การใช้พื้นที่ในบ้าน ($USER)
$(du -sh $HOME)
_อีโอเอฟ_
fi กลับ
}
การใช้งาน () {
echo "$PROGNAME: การใช้งาน: $PROGNAME [-f file | -i]" return
}
write_html_page () { แมว <<- _EOF_
$TITLE
$TITLE
$TIMESTAMP
$(report_uptime)
$(รายงาน_disk_space)
$(report_home_space)
_EOF_ กลับมา
}
# ประมวลผลตัวเลือกบรรทัดคำสั่ง
}
report_disk_space () { แมว <<- _EOF_
การใช้พื้นที่ดิสก์
$(df -h)
_EOF_ กลับมา
}
report_home_space () {
ถ้า [[ $(id -u) -eq 0 ]]; แล้วก็แมว <<- _EOF_
การใช้พื้นที่ในบ้าน (ผู้ใช้ทั้งหมด)
$(du -sh /home/*)
_อีโอเอฟ_
อื่น
แมว <<- _EOF_
การใช้พื้นที่ในบ้าน ($USER)
$(du -sh $HOME)
_อีโอเอฟ_
fi กลับ
}
การใช้งาน () {
echo "$PROGNAME: การใช้งาน: $PROGNAME [-f file | -i]" return
}
write_html_page () { แมว <<- _EOF_
$TITLE
$TITLE
$TIMESTAMP
$(report_uptime)
$(รายงาน_disk_space)
$(report_home_space)
_EOF_ กลับมา
}
# ประมวลผลตัวเลือกบรรทัดคำสั่ง
ข้อสรุปขึ้น
โต้ตอบ=
ชื่อไฟล์=
ในขณะที่ [[ -n $1 ]]; ทำกรณี $ 1 ใน
-f | --ไฟล์)
เปลี่ยน
ชื่อไฟล์=$1
;;
โต้ตอบ=
ชื่อไฟล์=
ในขณะที่ [[ -n $1 ]]; ทำกรณี $ 1 ใน
-f | --ไฟล์)
-i | --แบบโต้ตอบ) โต้ตอบ=1
;;
-h | --help) ออกจากการใช้งาน
;;
*) การใช้งาน >&2
ทางออก 1
;;
กะ esac
ทำ
# โหมดโต้ตอบ
ถ้า [[ -n $โต้ตอบ ]]; แล้วในขณะที่จริง; ทำ
อ่าน -p "ป้อนชื่อไฟล์ที่ส่งออก: " ชื่อไฟล์ถ้า [[ -e $filename ]]; แล้ว
read -p "'$filename' มีอยู่แล้ว เขียนทับหรือไม่ [y/n/q] > " case $REPLY in
Y|y) แตก
;;
Q|q) echo "โปรแกรมถูกยกเลิก" ทางออก
;;
*) ดำเนินต่อ
;;
ว่า C
elif [[ -z $filename ]]; แล้วไปต่อ
อื่น
ทำลาย
fi
ทำ
fi
# หน้า html เอาต์พุต
ถ้า [[ -n $filename ]]; แล้ว
ถ้าแตะ $filename && [[ -f $filename ]]; จากนั้น write_html_page > $filename
อื่น
-i | --แบบโต้ตอบ) โต้ตอบ=1
;;
-h | --help) ออกจากการใช้งาน
;;
*) การใช้งาน >&2
ทางออก 1
;;
กะ esac
ทำ
# โหมดโต้ตอบ
ถ้า [[ -n $โต้ตอบ ]]; แล้วในขณะที่จริง; ทำ
อ่าน -p "ป้อนชื่อไฟล์ที่ส่งออก: " ชื่อไฟล์ถ้า [[ -e $filename ]]; แล้ว
read -p "'$filename' มีอยู่แล้ว เขียนทับหรือไม่ [y/n/q] > " case $REPLY in
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 exit 1
fi อื่น
เขียน_html_page
fi
echo "$PROGNAME: ไม่สามารถเขียนไฟล์ '$filename'" >&2 exit 1
fi อื่น
เขียน_html_page
fi
เรายังไม่เสร็จ ยังมีอีกหลายสิ่งที่เราสามารถทำได้และการปรับปรุงที่เราสามารถทำได้