TỰ HỌC SỬ DỤNG LINUX - Trang 133

124

Bash

};

done;

echo $2

}

Cần chú ý đến tùy chọn -n của echo, nó (tùy chọn) hủy bỏ việc tạo dòng mới.

Mặc dù tùy chọn này không có nhiều ý nghĩa với mục đích chúng ta muốn ở đây,
nhưng sẽ rất có ích trong các hàm số với mục đích khác. Hàm số tính giai thừa
fact
Một ví dụ khác:

fact()

{

if [ $1 = 0 ]; then

echo 1;

else

{

echo $(( $1 * $( fact $(( $1 -- 1 )) ) ))

};

fi

}

Đây là hàm số giai thừa, một ví dụ của hàm đệ qui. Hãy chú ý đến sự khai

triển số học, và phép thế các câu lệnh.

5.9

Script của hệ vỏ và lệnh source

Script của hệ vỏ chỉ là các tập tin có chứa chuỗi lệnh. Tương tự hàm số script có
thể được thực hiện như một câu lệnh. Cú pháp truy cập đến các tham số cũng
như hàm số. Trong các trường hợp thông thường khi chạy script sẽ có một tiến
trình mới được chạy. Để có thể thực hiện script ở trong bản bash hiện thời, cần
sử dụng câu lệnh source, hay một dấu chấm “.” (đồng nghĩa của source). Trong
trường hợp này script chỉ đơn giản là một tham số của lệnh nói trên. Câu lệnh sẽ
có dạng:

source filename [arguments]

Câu lệnh này đọc và thực hiện các câu lệnh có trong tập tin filename trong

môi trường hiện thời, và trả lại giá trị, xác định bởi câu lệnh cuối cùng của
filename

. Nếu filename không chứa dấu gạch chéo, thì đường dẫn, liệt kê

trong biến số PATH, sẽ được sử dụng để tìm tập tin có tên filename. Tập tin
này không nhất thiết phải khả thi (không nhất thiết phải có bit x). Nếu trong
thư mục, liệt kê trong PATH, không tìm thấy tập tin cần, thì sẽ tìm nó (tập tin)
trong thư mục hiện thời. Nếu có các tham số (đưa ra arguments, xem định dạng
câu lệnh ở trên), thì trong thời gian thực hiện script chúng sẽ thành các tham
biến vị trí. Nếu không có tham số, thì tham biến vị trí không thay đổi. Giá trị
(trạng thái), mà lệnh source trả lại, trùng với giá trị, trả lại bởi câu lệnh cuối
cùng trong script. Nếu không câu lệnh nào được thực hiện, hoặc không tìm thấy
tập tin filename, thì trạng thái thoát bằng 0.

Liên Kết Chia Sẽ

** Đây là liên kết chia sẻ bới cộng đồng người dùng, chúng tôi không chịu trách nhiệm gì về nội dung của các thông tin này. Nếu có liên kết nào không phù hợp xin hãy báo cho admin.