3 Bash
3.8.4 Toán tu’’ select
Toán tu’’selectcho phép toˆ’ chu´’c hoˆ
˙i thoa˙i vo´’i ngu’o`’i dùng. Nó có da
˙ng sau:
selectname [inword; ]dolist;done
Lúc d¯aˆ`u tu`’ maˆ˜uwordhình thành moˆ
˙t danh sách nhu˜’ng tu`’ tu’o’ng u´’ng vo´’i maˆ˜u này. Taˆ ˙p ho
˙’p nhu˜’ng tu`’ này d¯u’o
˙’c d¯u’a vào kênh thông báo loˆ˜i tiêu chuaˆ’n, ho’n nu˜’a moˆ˜i tu`’ d¯u’o
˙’c d¯i kèm vo´’i moˆ
˙t soˆ´ thu´’tu
˙’. Neˆ´ u maˆ˜uwordbi
˙bo’ qua (không có trong toán tu’’select), thì se˜ d¯u’a vào các tham bieˆ´n vi
˙trí (xem trên) theo moˆ
˙t cách tu’o’ng tu
˙’. Sau d¯ó, daˆ´ u nha˘´c PS3 d¯u’o
˙’c d¯u’a ra, và heˆ
˙ vo’ cho`’ chuoˆ˜i nhaˆ
˙p vào trên d¯aˆ`u vào tiêu chuaˆ’n. Neˆ´u chuoˆ˜i nhaˆ
˙p vào có chu´’a soˆ´, tu’o’ng u´’ng vo´’i moˆ
˙t trong các soˆ´ d¯ã hieˆ
˙n ra, thì bieˆ´nnamese˜ d¯u’o
˙’c gán giá tri˙ba˘`ng tu`’ d¯i kèm vo´’i soˆ´ này. Neˆ´u nhaˆ
˙p vào moˆ
˙t dòng roˆ˜ng, thì soˆ´ và tu`’ se˜ d¯u’o
˙’c hieˆ˙n ra them moˆ
˙t laˆ`n nu˜’a. Neˆ´u nhaˆ ˙p vào baˆ´t ky` moˆ
˙t giá tri˙nào khác, thì bieˆ´nnamese˜ nhaˆ
˙n giá tri˙ba˘`ng không. Chuoˆ˜i mà ngu’o`’i dùng nhaˆ
˙p vào, d¯u’o
˙’c ghi la˙i trong bieˆ´nREPLY. Danh sách leˆ
˙nhlistd¯u’o
˙’c thu˙’c hieˆ˙n vo´’i giá tri
˙bieˆ´nnamed¯ã cho
˙n. Sau d¯ây là moˆ
˙t script nho’ (xin hãy gõ không daˆ´u neˆ´u console cu’a ba ˙n chu’a hoˆ˜ tro
˙’ vieˆ˙c hieˆ’n thi
˙Tieˆ´ng Vieˆ ˙t): kênh giao tác #!/bin/sh echo "Ba ˙n thích dùng OS nào?"
select var in "Linux" "Gnu Hurd" "Free BSD" "MacOSX" "Solaris" "QNX" "Other"; do break
done echo "Ba
3.8 Shell - moˆ
˙t ngôn ngu˜’ laˆ
˙p trình 47
Ghi d¯oa
˙n trên vào moˆ ˙t taˆ
˙p tin (ví du˙,select.sh), thay d¯oˆ’i d¯eˆ’ taˆ
˙p tin thành kha’ thi (ví du
˙, chmod 755 select.sh), và cha˙y (./select.sh). Trên màn hình se˜ hieˆ
˙n ra câu ho’i sau:
kênh giao tác
Ba
˙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 nhaˆ´n moˆ
˙t trong 7 soˆ´ d¯u’a ra (tu`’ 1 d¯eˆ´n 7). Neˆ´u ba ˙n nhaˆ
˙p 4 (nhaˆ´n ca’ <Enter>), thì se˜ thaˆ´y thông báo sau:
kênh giao tác
Ba
˙n d¯ã cho˙n MacOSX