40 Bash • /usr/ucb/edit
3.8.4 Toán tử select
Toán tử s e l e c t cho phép tổ chức hội thoại với người dùng. Nó có dạng sau: s e l e c t name [ i n word; ] do list; d o n e
Lúc đầu từ mẫu w o rd hình thành một danh sách những từ tương ứng với mẫu này. Tập hợp những từ này được đưa vào kênh thông báo lỗi tiêu chuẩn, hơn nữa mõi từ được đi kèm với một số thứ tự. Nếu mẫu w o rd bị bỏ qua (không có trong toán tử s e l e c t ) , thì sẽ đưa vào các tham biến vị trí (xem trên) theo một cách tương tự. Sau đó, dấu nhắc PS3 được đưa ra, và hệ vỏ chờ chuỗi nhập vào trên đầu vào tiêu chuẩn. Nếu chuỗi nhập vào có chứa số, tương ứng vói một trong các số đã hiện ra, thì biến name sẽ được gán giá trị bằng từ đi kèm với số này. Nếu nhập vào một dòng rỗng, thì số và từ sẽ được hiện ra them một lần nữa. Nếu nhập vào bất kỳ một giá trị nào khác, thì biến name sẽ nhận giá trị bằng không. Chuỗi mà người dùng nhập vào, được ghi lại trong biến REPLY. Danh sách lệnh list được thực hiện với giá trị biến name đã chọn. Sau đây là một script nhỏ (xin hãy gõ không dấu nếu console của bạn chưa hỗ trợ viêc hiển thị Tiếng Viêt):
--- kênh giao tác --- # ! /bin/sh
echo "Bạn thích dùng OS nào?"
select var in "Linux" "Gnu Hurd" "Free BSD" "MacOSX" "Solaris" "0NX" break
done
echo "Ban đã chon $var"
3.8 Shell - một ngôn ngữ lập trình 47
Ghi đoạn trên vào một tập tin (ví dụ, s e l e c t . sh ), thay đổi để tập tin thành khả thi (ví dụ, chm od 755 s e l e c t . sh ), và chạy (. / s e l e c t . sh). Trên màn hình sẽ hiện ra câu hỏi sau:
--- kênh giao tác --- Bạn thích dùng os nào?
1) Linux 3) Free BSD 5) Solaris 7) other 2) Gnu Hurd 4) MacOSX 6) QNX
#?
Hãy nhấn một trong 7 số đưa ra (từ 1 đến 7). Nếu bạn nhập 4 (nhấn cả <Enter>), thì sẽ thấy thông báo sau:
--- kênh giao tác --- Bạn đã chọn MacOSX