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

5.8 Shell - một ngôn ngữ lập trình

121

Lúc đầu từ mẫu word 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 word bị bỏ qua (không có trong
toán tử select), 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):

#!/bin/sh

echo "Bạn thích dùng OS nào?"

select var in "Linux" "Gnu Hurd" "Free BSD" "MacOSX" "Solaris"

"QNX" "Other"; do

break

done

echo "Bạn đã chọn $var"

Ghi đoạn trên vào một tập tin (ví dụ, select.sh), thay đổi để tập tin thành

khả thi (ví dụ, chmod 755 select.sh), và chạy (./select.sh). Trên màn
hình sẽ hiện ra câu hỏi sau:

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:

Bạn đã chọn MacOSX

5.8.5

Toán tử for

Toán tử for làm việc có khác một chút so với for trong các ngôn ngữ lập
trình thông thường. Thay vì tăng hoặc giảm giá trị của một biến số nào đó (lên
hoặc xuống) một đơn vị sau mỗi vòng lặp, thì nó gán giá trị tiếp theo trong
danh sách từ đưa sẵn

cho biến đó trong mỗi vòng lặp. Nói chung cấu trúc có

dạng sau:

for

name in words do list done

Quy luật xây dựng danh sách lệnh (list) giống trong toán tử if. Ví dụ. Script

sau tạo các tập tin fu1, fu2, và fu3:

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.