&& mantıksal AND mi:
&&, Mantıksal AND'i ifade etmenin bir yoludur , yani tüm ifadenin yalnızca her iki tarafı da doğruysa Doğru olduğu anlamına gelir. Mantıkta, tüm ifadenin (P&Q) sadece hem P hem de Q doğru olduğunda doğru olduğu söylenir .
Bunun bir sonucu olarak, bilgisayarlar genellikle P&Q'yu kısa devre değerlendirmesi olarak görürler . Dolayısıyla, tüm ifade yalnızca Hem P hem de Q doğruysa Doğru olacağından, P yanlışsa, Q ifadesi değerlendirilmez . Temelde bilgisayarlar tembeldir (verimli) ve eğer yoksa Q'yu değerlendirmeyi zahmet etmeyin. Bu mantıksal VEYA için de geçerlidir, önceki bağlantıya bakın.
Bash & & in Üç Bağlamı:
1) Komutun çıkış durumuyla Kısa Devre Değerlendirmesini kullanma:
Her komutun bir çıkış durumu vardır. Bir komutta hata varsa, sıfır olmayan bir çıkış durumu vardır. Bu nedenle, çıkış durumu sıfırdan farklıysa ve && komutları bir ifadeye zincirlemek için kullanılırsa, daha önceki komutların çıkış durumu 0 (Doğru) değilse daha sonraki komutlar değerlendirilmez (yürütülmez). Bunun nedeni kısa devre değerlendirmesidir. Eğer varsa:
P && Q
P doğru değilse Q yürütülmez (P 0 dışında bir durumla çıkarsa, bu doğru değildir). Aynı:
./configure && make
configure komutu bir hata içeriyorsa, make yapılamaz. Yani, temelde, eğer if ifadesi yazmanın bir yolu olur:
if ./configure ; then
make
fi
Unutmayın, çoğu bağlamda 0 yanlıştır, ancak bir çıkış durumu söz konusu olduğunda değil.
2) && Bash'in yerleşik [[]] test komutunda kullanılabilir:
&& Ayrıca ifadeleri birleştirme komutlarıyla aynı şekilde birleştirmek için bash [[]] içindeki yerleşik test komutunun içinde de kullanılabilir. Tüm test işlemi yalnızca && 'nin her iki işleneni de (yanları) doğruysa doğru olacaktır, örneğin:
if [[ ( $a -gt 2 ) && ( $a -lt 5 ) ]]; then ...
$ a'nın 2 ile 5 arasında bir tam sayı olup olmadığını (2 ve 5 dahil değil) söylemenin bir yolu olacaktır.
3) Aritmetik Değerlendirme:
Son olarak, && aritmetik değerlendirmede Mantıksal AND olarak kullanılabilir. Aşağıdakilerdeki sayıların her ikisi de (mantıksal AND) sıfır değilse , 0 döndürür, diğer 1 döndürülür:
kbrandt@desktop:~/$ echo $((1 & 1))
1
kbrandt@desktop:~/$ echo $((0 && 1))
0