Lưu ý rằng cú pháp đó được kế thừa từ shell Bourne.
Sau tên biến, bạn có thể có in
danh sách các phần tử được cung cấp rõ ràng hoặc do
lặp lại các tham số vị trí.
for i in 1 2 3
do
echo "$i"
done
Hoặc là
set 1 2 3
for i do
echo "$i"
done
Có do
trong cả hai trường hợp (ngay cả khi nó không thực sự cần thiết trong trường hợp đầu tiên) sẽ tạo ra một cú pháp phù hợp hơn. Nó cũng phù hợp với while
/ until
vòng lặp khi do
cần thiết.
while
cmd1
cmd2
do
cmd3
cmd4
done
Bạn cần phải do
cho biết danh sách các lệnh điều kiện kết thúc ở đâu.
Lưu ý rằng vỏ Bourne không hỗ trợ for i; do
. Cú pháp đó cũng không phải là POSIX cho đến phiên bản 2016 của tiêu chuẩn ( for i do
luôn luôn là POSIX; xem lỗi nhóm Austin liên quan ).
zsh
có một vài hình thức tốc ký như:
for i in 1 2 3; echo $i
for i (1 2 3) echo $i
for ((i=1;i<=3;i++)) echo $i
Hoặc hỗ trợ cho nhiều hơn một biến:
for i j (1 a 2 b) echo $i $j
(mặc dù bạn không thể sử dụng in
hoặc do
làm tên biến thay cho j
ở trên).
Ngay cả khi hiếm khi được ghi lại, hầu hết các shell giống Bourne (Bourne, ksh, bash, zsh, không phải ash
cũng không yash
) cũng hỗ trợ:
for i in 1 2 3; { echo "$i";}
Vỏ Bourne ksh
và zsh
(nhưng không bash
) cũng hỗ trợ:
for i { echo "$i"; }
Trong khi bash
, ksh
và zsh
(nhưng không phải vỏ Bourne):
for i; { echo "$i"; }
Tất cả (Bourne, bash
, ksh
, zsh
) hỗ trợ:
for i
{ echo "$i";}
ksh93
, bash
, zsh
Hỗ trợ:
for ((i=1;i<=3;i++)) { echo "$i"; }