Vòng lặp select trong Shell



Vòng lặp select cung cấp một cách dễ dàng để tạo một menu được đánh số từ đó người sử dụng có thể chọn lựa. Nó là hữu ích khi bạn muốn hỏi người sử dụng để chọn một hoặc nhiều mục từ một danh sách các lựa chọn.

Cú pháp trong Unix/Linux

select var in word1 word2 ... wordN
do
   cac lenh de thuc thi cho moi word.
done

Ở đây, var là tên một biến và word1 tới wordN là dãy các ký tự phân biệt nhau bởi khoảng trống. Cứ mỗi lần vòng lặp thực thi, giá trị biến var được thiết lập tới word tiếp theo trong danh sách các word, từ word1 tới wordN.

Đối với mỗi lựa chọn, một tập hợp các lệnh sẽ được thực thi bên trong vòng lặp. Vòng lặp này được giới thiệu trong ksh và đã được điều chỉnh vào trong bash. Nó là không có sẵn trong sh.

Ví dụ trong Unix/Linux

Ví dụ đơn giản dưới đây cho người sử dụng chọn một đồ uống trong danh sách các đồ uống.

#!/bin/ksh

select DRINK in tea cofee water juice appe all none
do
   case $DRINK in
      tea|cofee|water|all) 
         echo "Go to canteen"
         ;;
      juice|appe)
         echo "Available at home"
      ;;
      none) 
         break 
      ;;
      *) echo "ERROR: Invalid selection" 
      ;;
   esac
done
Quảng cáo

Menu được hiển thị bởi vòng lặp select trông như sau:

$./test.sh
1) tea
2) cofee
3) water
4) juice
5) appe
6) all
7) none
#? juice
Available at home
#? none
$

Bạn có thể thay đổi dòng nhắc được hiển thị bởi vòng lặp select bởi thay đổi biến PS3 như sau:

Quảng cáo
$PS3="Please make a selection => " ; export PS3
$./test.sh
1) tea
2) cofee
3) water
4) juice
5) appe
6) all
7) none
Please make a selection => juice
Available at home
Please make a selection => none
$

Đã có app VietJack trên điện thoại, giải bài tập SGK, SBT Soạn văn, Văn mẫu, Thi online, Bài giảng....miễn phí. Tải ngay ứng dụng trên Android và iOS.

Theo dõi chúng tôi miễn phí trên mạng xã hội facebook và youtube:

Follow fanpage của team https://www.facebook.com/vietjackteam/ hoặc facebook cá nhân Nguyễn Thanh Tuyền https://www.facebook.com/tuyen.vietjack để tiếp tục theo dõi các loạt bài mới nhất về Java,C,C++,Javascript,HTML,Python,Database,Mobile.... mới nhất của chúng tôi.

Các bài học UNIX phổ biến khác tại VietJack:


vong_lap_trong_unix_linux.jsp


Tài liệu giáo viên