1
3
do
statements using $value
done
list là một danh sách các giá trị, ví dụ như là tên file. Giá trị là một thành viên danh sách
đơn và statements là các lệnh sử dụng value. Một cú pháp khác của lệnh for có dạng như
sau:
for (( expr1; expr2; expr3 ))
do
.....
...
repeat all statements between do and
done until expr2 is TRUE
done
Linux không có tiện ích để đổi tên hay copy các nhóm của file. Trong MS-DOS nếu ta
có 17 file có phần mở rộng a*.doc, ta có thể sử dụng lệnh COPY để copy *.doc thành file
*.txt. Lệnh DOS như sau:
C:\ cp doc\*.doc doc\*.txt
sử dụng vòng lặp for của bash để bù đắp những thiếu sót này. Đoạn mã dưới đây có thể
được chuyển thành chương trình shell thực hiện đúng như những gì ta muốn:
for docfile in doc/*.doc
do
cp $docfile ${docfile%.doc}.txt
done
Sử dụng một trong các toán tử pattern-matching của bash, đoạn mã này làm việc copy
các file có phần mở rộng là *.doc bằng cách thay thế .doc ở cuối của tên file bằng .txt.
Một ví dụ khác về vòng for đơn giản như sau:
#!/bin/bash
for i in 1 2 3 4 5
do
echo "Welcome $i times"
done
Ta cũng có một cấu trúc về for như sau, chương trình này cũng có cùng chức năng như
chương trình trên nhưng ta chú ý đến sự khác biệt về cú pháp của lệnh for.
#!/bin/bash
for (( i = 0 ; i <= 5; i++ ))
do
echo "Welcome $i times"
done
$ chmod +x for2
$ ./for2
Welcome 0 times
Welcome 1 times
Welcome 2 times
Welcome 3 times