Jawaban:
Anda dapat menggunakannya some_command
sebagai kondisi pengujian Anda.
while ! some_command; do sleep 1; done
Kondisi akan tetap benar selama some_command
keluar dengan kesalahan.
Atau dengan cara yang lebih jelas jika Anda ingin melakukan pemeriksaan tambahan:
while ! some_command
do
# add more if desired
sleep 1
done
while ! some_command; do several; commands; sleep 1; done
Inilah until
gunanya loop:
until some_command
do sleep 1
done
Ini adalah negasi logis dari sebuah while
loop.
The Spec mengatakan:
until
loopThe until
Loop akan terus menjalankan salah satu senyawa-daftar asalkan lain senyawa-daftar memiliki status exit non-nol.
Format loop sampai adalah sebagai berikut:
hingga compound-list-1 lakukan compound-list-2 selesai
until
perintah selesai. Jika tidak, senyawa-daftar-2 harus dieksekusi, dan proses berulang.Anda bisa melakukannya:
false
while [ $? -ne 0 ] ; do
sleep 1
some_command
done
ini memiliki kekurangan meskipun selalu tidur satu detik lebih dulu
Jika Anda ingin dapat keluar dari salah satu dari sejumlah perintah untuk keluar dengan 0, Anda dapat melakukannya:
while true; do
if [ some_command ] ; then break ; fi
if [ some_other_command ] ; then break ; fi
sleep 1
done
yang tentu saja juga bekerja dengan adil some_command
[
dan ]
sekitar perintah.
Baik while ! ...
atau until ...
bekerja pada sistem yang membeku lingkungan shell mereka sebelum POSIX.1-2001. Namun, ini tidak.
while :; do
if some command; then
break
fi
sleep 1
done
Jika Anda tidak membutuhkan portabilitas total, mengapa Anda menulis skrip shell? Perl lebih mungkin tersedia daripada Bash.
sleep 1 while 0 != system qw(some command);
(Seperti di atas, sleep
ini hanya dieksekusi jika perintah gagal.)