Sintaksnya adalah:
while
first list of commands
do
second list of commands
done
yang menjalankan daftar perintah kedua dalam satu lingkaran selama daftar perintah pertama (jadi yang terakhir dijalankan dalam daftar itu) berhasil.
Dalam daftar perintah pertama , Anda dapat menggunakan [
perintah untuk melakukan berbagai macam tes, atau Anda dapat menggunakan :
perintah nol yang tidak melakukan apa pun dan mengembalikan kesuksesan, atau perintah lainnya.
while :; do cmd; done
Berulang cmd
-ulang selamanya karena :
selalu mengembalikan kesuksesan. Itu lingkaran selamanya . Anda bisa menggunakan true
perintah itu untuk membuatnya lebih terbaca:
while true; do cmd; done
Orang-orang dulu suka :
seperti :
yang selalu dibangun sementara true
(tidak lama; sebagian besar shell telah true
dibangun saat ini) ¹.
Varian lain yang mungkin Anda lihat:
while [ 1 ]; do cmd; done
Di atas, kami memanggil [
perintah untuk menguji apakah string "1" tidak kosong (jadi selalu benar juga)
while ((1)); do cmd; done
Menggunakan ((...))
sintaks Korn / bash / zsh untuk meniru while(1) { ...; }
C.
Atau yang lebih berbelit-belit seperti until false; do cmd; done
, until ! true
...
Itu kadang-kadang disebut sebagai:
alias forever='while :; do'
Jadi Anda dapat melakukan sesuatu seperti:
forever cmd; done
Hanya sedikit orang yang menyadari bahwa kondisinya adalah daftar perintah. Misalnya, Anda melihat orang menulis:
while :; do
cmd1
cmd2 || break
cmd3
done
Ketika mereka bisa menulis:
while
cmd1
cmd2
do
cmd3
done
Masuk akal untuk menjadi daftar karena Anda sering ingin melakukan hal-hal seperti while cmd1 && cmd2; do...; done
yang merupakan daftar perintah juga.
Bagaimanapun, perhatikan bahwa itu [
adalah perintah seperti yang lain (meskipun itu built-in di shell seperti Bourne modern), itu tidak harus digunakan hanya dalam daftar if
/ while
/ until
kondisi, dan daftar kondisi tersebut tidak memiliki untuk menggunakan perintah itu lebih dari perintah lainnya.
¹ :
juga lebih pendek dan menerima argumen (yang diabaikannya). Sementara perilaku true
atau false
tidak ditentukan jika Anda memberikan argumen apa pun. Jadi seseorang dapat melakukan misalnya:
while : you wait; do
something
done
Tapi, perilaku dari:
until false is true; do
something
done
tidak ditentukan (meskipun akan bekerja di sebagian besar shell / false
implementasi).
:
tidak melakukan apa pun kecuali selalu keluar dengan kode kembali 0. Jadi, itu sama sajawhile true
(dengan asumsi sistem Anda memilikitrue
executable).