<Trước | Nội dung | Tiếp theo>
Tổng hợp Up
Với việc bổ sung các tham số vị trí, giờ đây chúng ta có thể viết các tập lệnh khá chức năng. Đối với các tác vụ đơn giản, lặp đi lặp lại, các tham số vị trí giúp viết các hàm shell rất hữu ích có thể được đặt trong hộp của người dùng. .bashrc tập tin.
Của chúng tôi sys_info_page chương trình ngày càng phức tạp và phức tạp. Đây là danh sách đầy đủ, với những thay đổi gần đây nhất được nêu bật:
#! / bin / bash
#sys_info_page: chương trình xuất ra trang thông tin hệ thống
PROGNAME=$(tên cơ sở $0)
TITLE = "Báo cáo thông tin hệ thống cho $ HOSTNAME" CURRENT_TIME = $ (ngày + "% x% r% Z")
TIMESTAMP = "Được tạo ra $ CURRENT_TIME, bởi $ USER"
report_uptime () { mèo <<- _EOF_
Thời gian hoạt động hệ thống
$(thời gian hoạt động)
_EOF_ trở lại
#! / bin / bash
#sys_info_page: chương trình xuất ra trang thông tin hệ thống
PROGNAME=$(tên cơ sở $0)
TITLE = "Báo cáo thông tin hệ thống cho $ HOSTNAME" CURRENT_TIME = $ (ngày + "% x% r% Z")
TIMESTAMP = "Được tạo ra $ CURRENT_TIME, bởi $ USER"
report_uptime () { mèo <<- _EOF_
Thời gian hoạt động hệ thống
$(thời gian hoạt động)
_EOF_ trở lại
}
report_disk_space () { cat <<- _EOF_
Sử dụng không gian đĩa
$(df -h)
_EOF_ trở lại
}
report_home_space () {
if [[$ (id -u) -eq 0]]; sau đó mèo << - _EOF_
Sử dụng không gian gia đình (Tất cả người dùng)
$ (du -sh / home / *)
_EOF_
khác
con mèo << - _EOF_
Sử dụng không gian gia đình ($ USER)
$ (du -sh $ HOME)
_EOF_
fi trở lại
}
sử dụng () {
echo "$ PROGNAME: using: $ PROGNAME [-f tệp | -i]" trở lại
}
write_html_page () {cat << - _EOF_
$ TITLE
$ TITLE
$ TIMESTAMP
$ (report_uptime)
$ (report_disk_space)
$ (report_home_space)
_EOF_ trở lại
}
# xử lý tùy chọn dòng lệnh
}
report_disk_space () { cat <<- _EOF_
Sử dụng không gian đĩa
$(df -h)
_EOF_ trở lại
}
report_home_space () {
if [[$ (id -u) -eq 0]]; sau đó mèo << - _EOF_
Sử dụng không gian gia đình (Tất cả người dùng)
$ (du -sh / home / *)
_EOF_
khác
con mèo << - _EOF_
Sử dụng không gian gia đình ($ USER)
$ (du -sh $ HOME)
_EOF_
fi trở lại
}
sử dụng () {
echo "$ PROGNAME: using: $ PROGNAME [-f tệp | -i]" trở lại
}
write_html_page () {cat << - _EOF_
$ TITLE
$ TITLE
$ TIMESTAMP
$ (report_uptime)
$ (report_disk_space)
$ (report_home_space)
_EOF_ trở lại
}
# xử lý tùy chọn dòng lệnh
Tổng hợp Up
tương tác=
tên tệp =
trong khi [[-n $ 1]]; làm trường hợp $ 1 trong
-f | --tập tin)
thay đổi
tên tệp = $ 1
;;
tương tác=
tên tệp =
trong khi [[-n $ 1]]; làm trường hợp $ 1 trong
-f | --tập tin)
-i | - tương tác) tương tác = 1
;;
-h | --help) thoát sử dụng
;;
*) sử dụng> & 2
thoát 1
;;
ca esac
thực hiện
# chế độ tương tác
if [[-n $ tương tác]]; then while true; làm
read -p "Nhập tên tệp đầu ra:" tên tệp if [[-e $ filename]]; sau đó
read -p "'$ filename' tồn tại. Ghi đè? [y / n / q]>" trường hợp $ REPLY trong
Y | y) phá vỡ
;;
Q | q) echo "Chương trình đã kết thúc." lối ra
;;
*) tiếp tục
;;
nó C
elif [[-z $ filename]]; sau đó tiếp tục
khác
phá vỡ
fi
thực hiện
fi
# đầu ra trang html
if [[-n $ filename]]; sau đó
nếu chạm vào $ filename && [[-f $ filename]]; sau đó write_html_page> $ filename
khác
-i | - tương tác) tương tác = 1
;;
-h | --help) thoát sử dụng
;;
*) sử dụng> & 2
thoát 1
;;
ca esac
thực hiện
# chế độ tương tác
if [[-n $ tương tác]]; then while true; làm
read -p "Nhập tên tệp đầu ra:" tên tệp if [[-e $ filename]]; sau đó
read -p "'$ filename' tồn tại. Ghi đè? [y / n / q]>" trường hợp $ REPLY trong
Y | y) phá vỡ
;;
Q | q) echo "Chương trình đã kết thúc." lối ra
;;
*) tiếp tục
;;
nó C
elif [[-z $ filename]]; sau đó tiếp tục
khác
phá vỡ
fi
thực hiện
fi
# đầu ra trang html
if [[-n $ filename]]; sau đó
nếu chạm vào $ filename && [[-f $ filename]]; sau đó write_html_page> $ filename
khác
echo "$ PROGNAME: Không thể ghi tệp '$ filename'"> & 2 thoát 1
fi khác
write_html_trang
fi
echo "$ PROGNAME: Không thể ghi tệp '$ filename'"> & 2 thoát 1
fi khác
write_html_trang
fi
Chúng ta vẫn chưa xong đâu. Vẫn còn nhiều điều chúng ta có thể làm và những cải tiến chúng ta có thể thực hiện.
<Trước | Nội dung | Tiếp theo>