एक if स्टेटमेंट में && ऑपरेटर का उपयोग करना


84

मेरे पास तीन चर हैं:

VAR1="file1"
VAR2="file2"
VAR3="file3"

&&अगर इस तरह से कथन का उपयोग कैसे करें और ( ) ऑपरेटर:

if [ -f $VAR1 && -f $VAR2 && -f $VAR3 ]
   then ...
fi

जब मैं इस कोड को लिखता हूं तो यह त्रुटि देता है। सही तरीका क्या है?

जवाबों:


172

तो अपनी अभिव्यक्ति को काम करने के लिए, करने के लिए परिवर्तन &&करना -aहोगा।

यह इस तरह सही है:

 if [ -f $VAR1 ] && [ -f $VAR2 ] && [ -f $VAR3 ]
 then  ....

या पसंद है

 if [[ -f $VAR1 && -f $VAR2 && -f $VAR3 ]]
 then  ....

या और भी

 if [ -f $VAR1 -a -f $VAR2 -a -f $VAR3 ]
 then  ....

आप इस प्रश्न के विवरण में आगे के विवरण पा सकते हैं : यदि कथन में कई यूनेरी ऑपरेटर हैं और कुछ संदर्भ दिए गए हैं जैसे कि परीक्षण में क्या अंतर है, [और [?]


14
ध्यान दें कि POSIX के उपयोग की सिफारिश &&और ||अधिक एकल ब्रैकेट अंकन के साथ -aऔर -o, इसलिए सबसे पहले अंकन के लिए पोर्टेबल कोड जाने लिख रहे हैं, अन्यथा दूसरे और तीसरे को छोड़, खासकर जब से यह अजीब और अगर आप की जरूरत है पढ़ने के लिए कठिन हो सकता है समूह अभिव्यक्तियों के लिए।
एड्रियन फ्रुविर्थ
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.