122
Bash
for a in 1 2 3 ; do
touch fu$a
done
Có thể gõ ba dòng này trên một dòng lệnh, kết quả thu được tương tự với
script. Dạng tổng quát của toán tử for như sau:
for
name [ in word; ] do list ; done
Đầu tiên cũng xảy ra sự khai triển từ word theo quy luật khai triển biểu thức
(xem trên). Sau đó biến name lần lượt được gán các giá trị thu được từ sự
khai triền này, và thực hiện danh sách lệnh list trong mỗi lần như vậy. Nếu
không có “in word”, thì danh sách lệnh list được thực hiện một lần cho mỗi
tham biến vị trí
đã đưa ra. Trên Linux có chương trình seq, tiếp nhận hai
số nguyên làm tham số, và đưa ra chuỗi tất cả các số nằm giữa hai số này (cộng
thêm cả chúng). Nhờ câu lệnh này có thể sử dụng for của bash làm việc như
toán tử for trong các ngôn ngữ lập trình thông thường. Để làm được điều này
chỉ cần viết vòng lặp for như sau:
for a in $( seq 1 6 ) ; do
cat fu$a
done
Câu lệnh (script) này đưa ra màn hình nội dung của 10 tập tin (nếu có): “fu1”,
..., “fu10”.
5.8.6
Toán tử while và until
Toán tử while làm việc tương tự như if, nhưng vòng lặp các câu lệnh trong
list2
chỉ thực hiện khi điều kiện còn đúng, và sẽ ngừng khi điều kiện không
thỏa mãn. Cấu trúc có dạng như sau:
while
list1 do list2 done
Ví dụ:
while [ -d directory ] ; do
ls -l directory >> logfile
echo -- SEPARATOR -- >> logfile
sleep 60
done
Chương trình (script) trên sẽ theo dõi và ghi lại nội dung của thư mục directory
theo từng phút nếu thư mục còn tồn tại. Toán tử until tương tự như toán tử
while
:
until
list1 do list2 done