<Trước | Nội dung | Tiếp theo>
Các chức năng của Shell
Tập lệnh của chúng tôi hiện thực hiện các bước sau để tạo tài liệu HTML:
1. Mở trang.
2. Mở đầu trang.
3. Đặt tiêu đề trang.
4. Đóng tiêu đề trang.
5. Mở nội dung trang.
6. Tiêu đề trang đầu ra.
7. Dấu thời gian đầu ra.
8. Đóng nội dung trang.
9. Đóng trang.
Đối với giai đoạn phát triển tiếp theo của chúng tôi, chúng tôi sẽ thêm một số nhiệm vụ giữa các bước 7 và 8. Chúng sẽ bao gồm:
● Thời gian hoạt động và tải của hệ thống. Đây là khoảng thời gian kể từ lần tắt máy hoặc khởi động lại lần cuối và số tác vụ trung bình hiện đang chạy trên bộ xử lý trong các khoảng thời gian liên tục.
● Dung lượng ổ đĩa. Việc sử dụng tổng thể không gian trên các thiết bị lưu trữ của hệ thống.
● Không gian nhà. Số lượng không gian lưu trữ đang được sử dụng bởi mỗi người dùng.
Nếu chúng ta có một lệnh cho mỗi tác vụ này, chúng ta có thể thêm chúng vào tập lệnh của mình chỉ bằng cách thay thế lệnh:
#! / bin / bash
# Chương trình xuất trang thông tin hệ thống
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"
con mèo << _EOF_
#! / bin / bash
# Chương trình xuất trang thông tin hệ thống
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"
con mèo << _EOF_
$ TITLE
$ TITLE
$ TIMESTAMP
$ (report_uptime)
$ (report_disk_space)
$ (report_home_space)
_EOF_
$ TITLE
$ TITLE
$ TIMESTAMP
$ (report_uptime)
$ (report_disk_space)
$ (report_home_space)
_EOF_
Chúng ta có thể tạo các lệnh bổ sung này theo hai cách. Chúng tôi có thể viết ba tập lệnh riêng biệt và đặt chúng trong một thư mục được liệt kê trong PATH của chúng tôi hoặc chúng tôi có thể nhúng các tập lệnh vào chương trình của mình dưới dạng chức năng vỏ. Như chúng ta đã đề cập trước đây, các hàm shell là “các tập lệnh nhỏ” nằm bên trong các tập lệnh khác và có thể hoạt động như các chương trình tự trị. Các hàm shell có hai dạng cú pháp. Đầu tiên, hình thức chính thức hơn:
chức năng tên {
lệnh
trở lại
}
và biểu mẫu đơn giản hơn (và thường được ưu tiên):
tên () {
lệnh
trở lại
}
#! / bin / bash
#! / bin / bash
# Bản trình diễn chức năng Shell
function step2 {echo "Bước 2" trả về
}
# Chương trình chính bắt đầu từ đây echo "Bước 1"
# Bản trình diễn chức năng Shell
function step2 {echo "Bước 2" trả về
}
# Chương trình chính bắt đầu từ đây echo "Bước 1"
Ở đâu tên là tên của hàm và lệnh là một chuỗi các lệnh chứa bên trong hàm. Cả hai hình thức đều tương đương và có thể được sử dụng thay thế cho nhau. Dưới đây, chúng tôi thấy một tập lệnh thể hiện việc sử dụng một hàm shell:
1
2
3
4
5
6
7
8
9
10
11
12
1
2
3
4
5
6
7
8
9
10
11
12
Các chức năng của Shell
13 bước 2
14 echo "Bước 3"
13 bước 2
14 echo "Bước 3"
Khi shell đọc script, nó sẽ chuyển qua các dòng từ 1 đến 11, vì các dòng đó bao gồm các chú thích và định nghĩa hàm. Việc thực thi bắt đầu ở dòng 12, với một bỏ lỡ chỉ huy. Dòng 13 cuộc gọi chức năng vỏ Bước 2 và shell thực thi chức năng giống như bất kỳ lệnh nào khác. Điều khiển chương trình sau đó chuyển đến dòng 6 và dòng thứ hai bỏ lỡ lệnh được thực hiện. Dòng 7 được thực hiện tiếp theo. Của nó trở lại lệnh kết thúc hàm và trả lại quyền điều khiển cho chương trình tại dòng sau lệnh gọi hàm (dòng 14), và dòng cuối cùng bỏ lỡ lệnh được thực hiện. Lưu ý rằng để các lệnh gọi hàm được nhận dạng là các hàm shell và không được hiểu là tên của các chương trình bên ngoài, các định nghĩa hàm shell phải xuất hiện trong tập lệnh trước khi chúng được gọi.
Chúng tôi sẽ thêm các định nghĩa hàm shell tối thiểu vào tập lệnh của chúng tôi:
#! / bin / bash
# Chương trình xuất trang thông tin hệ thống
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 () {return
}
report_disk_space () {return
}
report_home_space () {return
}
con mèo << _EOF_
$ TITLE
$ TITLE
$ TIMESTAMP
$ (report_uptime)
$ (report_disk_space)
$ (report_home_space)
#! / bin / bash
# Chương trình xuất trang thông tin hệ thống
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 () {return
}
report_disk_space () {return
}
report_home_space () {return
}
con mèo << _EOF_
$ TITLE
$ TITLE
$ TIMESTAMP
$ (report_uptime)
$ (report_disk_space)
$ (report_home_space)
_EOF_
_EOF_
Tên hàm Shell tuân theo các quy tắc tương tự như các biến. Một hàm phải chứa ít nhất một lệnh. Các trở lại lệnh (là tùy chọn) đáp ứng yêu cầu.
<Trước | Nội dung | Tiếp theo>