Lütfen dikkat, inşaat ile [] && cmdaynı değildir if .. fi.
Bazen onun davranışı oldukça benzer ve [] && cmdbunun yerine kullanabilirsiniz if .. fi. Ama sadece bazen. Eğer birden fazla koşula sahipseniz, koşulu yerine getirmek için bir komutunuz varsa ya if .. else .. fida dikkatli olmanız ve mantığa bakmanız gerekir .
Birkaç örnek:
[ -z "$VAR" ] && ls file || echo wiiii
Aynı değil
if [ -z $VAR ] ; then
ls file
else
echo wiii
fi
çünkü lsbaşarısız olursa, echoolmayacak olan idam edilecek if.
Başka bir örnek:
[ -z "$VAR" ] && ls file && echo wiii
aynı değil
if [ -z "$VAR" ] ; then
ls file
echo $wiii
fi
yine de bu inşaat aynı şekilde hareket edecek
[ -z "$VAR" ] && { ls file ; echo wiii ; }
yankıdan ;sonra önemli olduğunu ve orada olması gerektiğini lütfen unutmayın .
Yani yukarıdaki ifadeye devam ederek diyebiliriz
[] && cmd == eğer ilk komut başarılı olursa bir sonrakini yürütün
if .. fi == koşulu (aynı zamanda test komutu olabilir) daha sonra komutları çalıştırın
Taşınabilirlik için aralarında Yani [ve [[kullanmak [sadece.
ifPOSIX uyumludur. Eğer var ise arasında seçim yapmak [ve ifsizin görev ve beklenen davranışlara bakmak seçin.
[ … ]vs[[ … ]]vstest …, daha eksiksiz cevaplar vardır bu çoğunlukla yinelenen soru .