1
3
Vòng lặp for giới hạn số lần mà một đoạn mã được thi hành, các cấu trúc while và until
của bash cho phép một đoạn mã được thi hành liên tục cho đến khi một điều kiện nào đó
xảy ra. Chỉ với chú ý là đoạn mã này cần viết sao cho điều kiện cuối phải xảy ra nếu không
sẽ tạo ra một vòng lặp vô tận. Cú pháp của nó như sau:
while condition
do
statements
done
Cú pháp này có nghĩa là khi nào condition còn true, thì thực hiện statements cho đến
khi condition trở thành false (cho đến khi một chương trình hay một lệnh trả về khác 0):
until condition
do
statements
done
Cú pháp until có nghĩa là trái ngược với while: cho đến khi condition trở thành true thì
thi hành statements (có nghĩa là cho đến khi một lệnh hay chương trình trả về mã thoát
khác 0)
Cấu trúc while của bash khắc phục thiếu sót không thể tự động tăng, giảm con đếm cua
vòng lặp for. Ví dụ, ta muốn copy 150 bản của một file, thì vòng lặp while là một lựa chọn
để giải quyết bài toán này. Dưới đây là chương trình:
#!/bin/sh
#
declare -i idx
idx=1
while [ $idx != 150]
do
cp somefile somefile.$idx
idx=$idx+1
done
Chương trình này giới thiệu cách sử dụng tính toán số nguyên của bash. Câu lệnh
declare khởi tạo một biến, idx, định nghĩa là một số nguyên. Mỗi lần lặp idx tăng lên, nó sẽ
được kiểm tra để thoát khỏi vòng lặp. Vòng lặp until tuy cũng có khả năng giống while
nhưng không được dùng nhiều vì rất khó viết và chạy chậm.
Một ví dụ nữa về cách sử dụng vòng lặp while được minh họa trong chương trình in
bản nhân của một số:
#!/bin/sh
#Script to test while statement
#
#
if [ $# -eq 0 ]
then
echo "Error - Number missing form command line argument"
echo "Syntax : $0 number"
echo " Use to print multiplication table for given number"
exit 1
fi
n=$1
i=1
while [ $i -le 10 ]