Lưu ý rằng cú pháp đó được kế thừa từ shell Bourne.
Sau tên biến, bạn có thể có indanh sách các phần tử được cung cấp rõ ràng hoặc dolặ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ó dotrong 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/ untilvòng lặp khi docần thiết.
while
cmd1
cmd2
do
cmd3
cmd4
done
Bạn cần phải docho 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 doluô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 inhoặc dolà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 ashcũng không yash) cũng hỗ trợ:
for i in 1 2 3; { echo "$i";}
Vỏ Bourne kshvà zsh(nhưng không bash) cũng hỗ trợ:
for i { echo "$i"; }
Trong khi bash, kshvà 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, zshHỗ trợ:
for ((i=1;i<=3;i++)) { echo "$i"; }