sorun (
bir operatör karakter ise [
, sadece alır parametreleri ne olursa olsun yorumlayabilir bash basit buildtin komutu (test
yazmak için başka bir yol), olmasıdır. Operatörler ayrıştırma komut yürütmeden önce gelir.
if [ \(! true \) -o true ]
then
echo "Success!"
else
echo "Fail!"
fi
veya
if [ '(' ! true ')' -o true ]
then
echo "Success!"
else
echo "Fail!"
fi
[[ ... ]]
yapı zamanki sözdizimsel sınırlamaları olmayan bir özel sözdizimsel bir yapıdır:
[
ile (
ve )
kullanmak için, onları alıntı zorunda komutlar, başka bir seviyede çalıştığı için. Bu yüzden burada Ignacio'nun dediği gibi, parantezlerinizi belirtmeniz gerekmez. (Ayrıca, &&
ve -a
ve -o
yerine ||
'u kullanmanız gerekir.)