मैं बैश 3 के साथ काम कर रहा हूं, और मैं एक सशर्त बनाने की कोशिश कर रहा हूं। C / C ++ में, इसका मृत सरल ((A || B) && C)
:। बैश में, इसका मोड़ ऐसा नहीं है (मुझे लगता है कि जीआईटी लेखकों ने अन्य प्रयासों पर जाने से पहले इस कोड का योगदान दिया होगा)।
यह काम नहीं करता। ध्यान दें कि <0 or 1>
एक स्ट्रिंग शाब्दिक नहीं है; इसका मतलब है 0 या 1 (आम तौर पर आता है 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
यह परिणाम है:
line 322: syntax error near unexpected token `[['
मैंने तब कोशिश की:
A=<0 or 1>
B=<0 or 1>
C=<0 or 1>
if [ ([ "$A" -eq "0" ]) || ([ "$B" -ne "0" ]) ] && [ "$C" -eq "0" ]; then ... fi
यह परिणाम है:
line 322: syntax error near unexpected token `[['
समस्या का एक हिस्सा है खोज परिणाम तुच्छ उदाहरण हैं, न कि यौगिक स्थिति वाले अधिक जटिल उदाहरण।
मैं ((A || B) && C)
बैश में एक साधारण प्रदर्शन कैसे करूं ?
मैं इसे अनियंत्रित करने और कई ब्लॉकों में समान कमांड दोहराने के लिए तैयार हूं:
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