समस्या है कि यहाँ [
, बैश में एक साधारण buildtin आदेश (एक और तरीका test
लिखने के लिए) है, जो केवल व्याख्या कर सकते हैं जो कुछ भी यह हो जाता है पैरामीटर है, जबकि (
एक ऑपरेटर चरित्र है। ऑपरेटर का पार्सिंग कमांड निष्पादन से पहले आता है।
if [ \(! true \) -o true ]
then
echo "Success!"
else
echo "Fail!"
fi
या
if [ '(' ! true ')' -o true ]
then
echo "Success!"
else
echo "Fail!"
fi
[[ ... ]]
निर्माण एक विशेष वाक्यात्मक निर्माण जो सामान्य से वाक्यात्मक सीमा नहीं है है:
(
और )
[
के साथ प्रयोग करने के लिए, आप उन्हें उद्धृत करने के लिए है आदेश, क्योंकि यह एक और स्तर पर काम करता है। इस प्रकार इग्नासिओ ने कहा कि यहां आपको अपने कोष्ठक उद्धृत करने की आवश्यकता नहीं है। (इसके अलावा, आपको &&
और ||
का उपयोग -a
और -o
के बजाय यहां करना होगा।)
स्रोत
2011-05-28 19:12:43