2011-05-28 8 views

उत्तर

3

आप ऐसा नहीं कर सकते, लेकिन आप यह कर सकते हैं:

if [ ! true ] || [ true ] 

एक सामान्य नियम के रूप में, [ को -a या -o विकल्पों का उपयोग करने की कोशिश कभी नहीं।

5

समस्या है कि यहाँ [, बैश में एक साधारण 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 के बजाय यहां करना होगा।)

संबंधित मुद्दे