komut satırı - amacı &&
nedir?
Kabuğunda, gördüğünüzde
$ command one && command two
amaç, &&
yalnızca ilk komut başarılı olduğunda izleyen komutu yürütmektir . Bu Posix mermilerinin deyimidir ve sadece Bash'te bulunmaz.
Birincisi başarısız olursa, ikinci sürecin çalışmasını önlemeyi amaçlamaktadır.
"Niyet" kelimesini kullandığımı fark edebilirsiniz - bu iyi bir nedendir. Tüm programlar aynı davranışa sahip değildir, bu nedenle bunun çalışması için, programın ne "hata" olduğunu düşündüğünü ve belgeleri ve gerekirse kaynak kodunu okuyarak programı nasıl ele aldığını anlamanız gerekir.
Kabuğunuz true için 0, false için diğer pozitif sayılar için bir dönüş değeri olarak kabul eder
Programlar çıkışta bir sinyal döndürür . Başarılı bir şekilde çıkarlarsa 0, yapmazlarsa sıfırdan büyük olmalıdırlar. Bu, işlemler arasında sınırlı miktarda iletişime izin verir.
&&
Olarak adlandırılır AND_IF
olarak POSIX kabuk dilbilgisi bir parçasıdır, and_or
liste de içeren bir komut, ||
bir olan OR_IF
benzer semantik ile.
Belgelerden alıntılanan dilbilgisi sembolleri:
%token AND_IF OR_IF DSEMI
/* '&&' '||' ';;' */
Ve herhangi bir sayıda AND_IF
s ( &&
) ve / veya OR_IF
s ( ||
) ' nin ( and_or
tekrar tekrar tanımlandığı gibi ) birlikte gerdirilebileceğini gösteren Gramer (belgelerden de alıntılanmıştır ):
and_or : pipeline
| and_or AND_IF linebreak pipeline
| and_or OR_IF linebreak pipeline
Her iki operatör de eşit önceliğe sahiptir ve soldan sağa değerlendirilir (sol ilişkiseldir). Dokümanların dediği gibi:
Bir AND-OR
liste operatörleri tarafından ayrılan bir veya daha fazla boru hattı bir dizisidir "&&"
ve "||"
.
Bir listesi bir veya daha fazla bir dizisidir ve-veya listeler operatörler ile ayrılmış ';'
ve '&'
ve isteğe bağlı olarak sona ';'
, '&'
ya da.
Operatörler "&&"
ve "||"
eşit önceliğe sahip olmalı ve sol birliktelikle değerlendirilmelidir. Örneğin, aşağıdaki komutların her ikisi de standart çıktıya yalnızca çubuk yazar:
$ false && echo foo || echo bar
$ true || echo foo && echo bar
İlk durumda, false, durumuyla çıkan bir komuttur. 1
$ false
$ echo $?
1
bu vasıtalar, echo foo
çalışmaz (yani, kısa devre echo foo
). Sonra komut echo bar
yürütülür.
İkinci durumda, true kodu 0
$ true
$ echo $?
0
ve bu nedenle echo foo
yürütülmez, sonra echo bar
yürütülür.
false && echo "Will not be printed"
.