Gunakan &&
operator,
cmd1 && cmd2 && cmd3
Dalam shellscripting, &&
dan ||
operator dimodelkan setelah implementasi optimal dari operator logis dalam C. &&
berarti DAN operator, dan ||
berarti OR. Unix terkait erat dengan C, dan di C, operan kedua dari operator logis tidak dievaluasi jika hasilnya sudah diketahui dari operan pertama. Misalnya "false && x"
adalah false
untuk setiap x
, sehingga tidak ada kebutuhan untuk mengevaluasi x
(terutama jika x
adalah fungsi panggilan); sama untuk "true || x"
. Ini juga disebut semantik hubungan pendek .
Dan di Unix, adalah tradisional untuk menafsirkan nilai-nilai pengembalian perintah sebagai nilai-nilai kebenaran "berhasil diselesaikan": kode keluar 0 berarti true
(berhasil), bukan nol berarti false
(kegagalan). Jadi, ketika perintah pertama dalam cmd1 && cmd2
pengembalian "false"
(status keluar nol, yang menunjukkan kegagalan), status perintah majemuk dikenal: kegagalan. Jadi interpretasi keseluruhan cmd1 && cmd2
mungkin: "jalankan cmd1
, DAN LALU, jika tidak gagal, cmd2
". Yang pada dasarnya Anda inginkan dalam pertanyaan Anda.
Demikian pula dengan OR: cmd1 || cmd2
dapat diartikan sebagai "mengeksekusi cmd1
, ATAU JIKA gagal, cmd2
".
Protip: untuk rantai yang lebih panjang &&
, pertimbangkan untuk memasukkan set -e
skrip Anda. Ini pada dasarnya mengubah titik koma ;
menjadi &&
, dengan beberapa kasus khusus.