GIÁO TRÌNH HỆ ĐIỀU HÀNH UNIX - LINUX - Trang 138

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