GIÁO TRÌNH HỆ ĐIỀU HÀNH UNIX - LINUX - Trang 142

1
4


select dir in $PATH
do

if [ $dir ]; then

cnt=$(ls –Al $dir | wc -l)

echo “$cnt files in $dir”

else

echo “Dohhh! No such choice!”

fi

echo –e “\nPress ENTER to continue, CTRL –C to quit”

read

clear

done

Chương trình to các menu bng select

Lệnh đầu tiên đặt kí tự IFS là : (ký tự phân cách), vì thế select có thể phân tích hoàn

chỉnh biến môi trường $PATH. Sau đó nó thay đổi lời nhắc default khi select bằng biến
PS3. Sau khi xoá sạch màn hình, nó bước vào một vòng lặp, đưa ra một danh sách các thư
mục nằm trong $PATH và nhắc người dùng chọn lựa như là minh hoạ trong hình dưới.

Nếu người dùng chọn hợp lệ, lệnh ls được thực hiện kết quả được gửi cho lệnh đếm từ

wc để đếm số file trong thư mục và hiển thị kết quả có bao nhiêu file trong thư mục đó. Do
ls có thể sử dụng mà không cần đối số, script đầu tiên cần chắc chắn là $dir khác null (nếu
nó là null, ls sẽ hoạt động trên thư mục hiện hành nếu người dùng chọn 1 menu không hợp
lệ). Nếu người dùng chọn không hợp lệ, một thông báo lỗi sẽ được hiển thị. Câu lệnh read
(được giới thiệu sau) cho phép người dùng đánh vào lựa chọn của mình và nhấn Enter để
lặp lại vòng lặp hay nhấn Ctrl + C để thoát.

Chú ý:

Như đã giới thiệu, các vòng lặp script không kết thuc nếu ta không nhấn Ctrl+C.

Tuy nhiên ta có thể sử dụng lệnh break để thoát ra.