Lütfen dikkat, inşaat ile [] && cmd
aynı değildir if .. fi
.
Bazen onun davranışı oldukça benzer ve [] && cmd
bunun 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 .. fi
da 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ü ls
başarısız olursa, echo
olmayacak 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.
if
POSIX uyumludur. Eğer var ise arasında seçim yapmak [
ve if
sizin görev ve beklenen davranışlara bakmak seçin.
[ … ]
vs[[ … ]]
vstest …
, daha eksiksiz cevaplar vardır bu çoğunlukla yinelenen soru .