Perhatikan bahwa sintaksis diwarisi dari shell Bourne.
Setelah nama variabel, Anda dapat memiliki indaftar elemen yang diberikan secara eksplisit, atau do, untuk mengulang parameter posisi.
for i in 1 2 3
do
echo "$i"
done
Atau
set 1 2 3
for i do
echo "$i"
done
Memiliki dodalam kedua kasus (bahkan jika itu tidak sepenuhnya diperlukan dalam yang pertama) membuat sintaks yang lebih konsisten. Ini juga konsisten dengan while/ untilloop di mana dodiperlukan.
while
cmd1
cmd2
do
cmd3
cmd4
done
Anda perlu domengetahui di mana daftar perintah kondisi berakhir.
Perhatikan bahwa shell Bourne tidak mendukung for i; do. Sintaks itu juga tidak POSIX sampai edisi 2016 standar ( for i doselalu POSIX; lihat bug grup Austin terkait ).
zsh memiliki beberapa bentuk steno seperti:
for i in 1 2 3; echo $i
for i (1 2 3) echo $i
for ((i=1;i<=3;i++)) echo $i
Atau dukungan untuk lebih dari satu variabel:
for i j (1 a 2 b) echo $i $j
(meskipun Anda tidak dapat menggunakan inatau dosebagai nama variabel di tempat di jatas).
Meskipun jarang didokumentasikan, sebagian besar shell mirip Bourne (Bourne, ksh, bash, zsh, tidak ashjuga yash) juga mendukung:
for i in 1 2 3; { echo "$i";}
Shell Bourne, kshdan zsh(tetapi tidak bash) juga mendukung:
for i { echo "$i"; }
Sementara bash, kshdan zsh(tetapi bukan shell Bourne) mendukung:
for i; { echo "$i"; }
Semua (Bourne, bash, ksh, zsh) dukungan:
for i
{ echo "$i";}
ksh93, bash, zshDukungan:
for ((i=1;i<=3;i++)) { echo "$i"; }