Bash 3 ile çalışıyorum ve şartlı bir şeyler oluşturmaya çalışıyorum. C / C ++, onun ölü basit: ((A || B) && C). Bash’te ortaya çıkması böyle değil (Git yazarlarının diğer çabalara geçmeden önce bu koda katkıda bulunmaları gerektiğini düşünüyorum).
Bu çalışmıyor. <0 or 1>Bir dize değişmez olduğunu unutmayın ; 0 veya 1 anlamına gelir (genellikle gelir grep -i).
A=<0 or 1>
B=<0 or 1>
C=<0 or 1>
if [ [ "$A" -eq "0" ] || [ "$B" -ne "0" ] ] && [ "$C" -eqe "0" ]; then ... fi
Bu sonuçlanır:
line 322: syntax error near unexpected token `[['
Sonra denedim:
A=<0 or 1>
B=<0 or 1>
C=<0 or 1>
if [ ([ "$A" -eq "0" ]) || ([ "$B" -ne "0" ]) ] && [ "$C" -eq "0" ]; then ... fi
sonuçlanır:
line 322: syntax error near unexpected token `[['
Sorunun bir kısmı, arama sonuçlarının önemsiz örnekleridir ve bileşik koşulluların daha karmaşık örnekleri değildir.
((A || B) && C)Bash'te basit bir işlemi nasıl yapabilirim ?
Sadece onu açmaya ve aynı komutları birden fazla blok halinde tekrarlamaya hazırım:
A=<0 or 1>
B=<0 or 1>
C=<0 or 1>
if [ "$A" -eq "0" ] && [ "$C" -eq "0" ]; then
...
elif [ "$B" -ne "0" ] && [ "$C" -eq "0" ]; then
...
fi