&&Operatör kullan
cmd1 && cmd2 && cmd3
Kabuk komut dosyasında &&ve ||operatörler, C'deki mantıksal operatörlerin optimize edilmiş uygulamasından sonra modellenir &&ve AND ||anlamına gelir ve VEYA anlamına gelir. Unix, C ile sıkı sıkıya ilişkilidir ve C'de, sonuç ilk işlenenden zaten biliniyorsa, ikinci mantıksal işleç işleci değerlendirilmez. Örneğin "false && x", herkes falseiçin x, bu yüzden değerlendirmeye gerek yok x(özellikle xbir işlev çağrısı ise); benzer şekilde "true || x". Buna aynı zamanda kısa devre anlambilimi denir .
Unix'te, komutların dönüş değerlerini "başarılı tamamlama" gerçeği değerleri olarak yorumlamak gelenekseldir: çıkış kodu 0 anlamına gelir true(başarı), sıfır olmayan araçlar false(başarısızlık). Bu nedenle, cmd1 && cmd2döndürülen ilk komut "false"(başarısızlığı gösteren sıfır olmayan çıkış durumu), bileşik komutun durumu bilinir: başarısızlık. Bu nedenle, genel yorumu şöyle cmd1 && cmd2 olabilir: " cmd1başarısız olursa, yürütmek ve sonra cmd2.". Sorunuzda temel olarak istediğiniz şey budur.
OR ile benzer şekilde: cmd1 || cmd2"çalıştır cmd1, VEYA başarısız olursa " olarak yorumlanabilir cmd2.
Protip: daha uzun zincirler için betiğinizi eklemeyi&& düşünün set -e. Temelde noktalı virgül değiştirir ;içine &&özel durumlarda bir çift.