/ Usr / bin / [क्या है और मैं इसका उपयोग कैसे करूं?


26

मैं Coreutils को देख रहा था और इसे एक फाइल के रूप में शामिल पाया जो coreutils के भाग के रूप में शामिल थी /usr/bin/[:। क्या है [और यह क्या करता है?

यह एक निष्पादन योग्य है। मैं अभी नहीं जानता कि यह क्या करता है या इसका उपयोग कैसे करना है।

$ फ़ाइल / यूएसआर / बिन / [
/ usr / बिन / [: ईएलएफ 32-बिट एलएसबी निष्पादन योग्य, इंटेल 80386, संस्करण 1 (SYSV), गतिशील रूप से जुड़ा हुआ है (जीएनयू / लिनक्स 2.6.55 के लिए साझा किए गए उपयोग का उपयोग करता है), छीन लिया गया

जब मैं इसे चलाने की कोशिश करता हूं, मुझे लगता है कि यह लाइन विस्तार में निर्मित बैश के लिए डिफ़ॉल्ट है। इसके बजाय वास्तव में फ़ाइल चल रहा है।

$ "/ usr / bin / ["
/ usr / bin / [: लापता ] ']' $ /usr/bin/\[
/usr/bin/[: missing



2
man [ओएस एक्स पर काम करता है
डैनियल बेक

जवाबों:


33

यह कमांड के बराबर है test। (देखें info test।) आम तौर पर आप इसे सशर्त अभिव्यक्ति की लिपियों में उपयोग करते हैं जैसे:

if [ -n "$1" ]; then
    echo $1
fi

बंद ब्रैकेट को सशर्त संलग्न करने के लिए आवश्यक है। (ठीक है, यह कोड में अच्छे दिखने के लिए इसकी आवश्यकता की तरह दिखता है। क्या किसी को इसके लिए कोई अन्य व्यावहारिक कारण पता है?)


3
ध्यान दें कि [है दोनों एक खोल में निर्मित और एक ही (या समान) के उपयोग के साथ एक बाहरी कार्यक्रम। बैश में, जब आप दौड़ते हैं [या testआप बिल्ट-इन का आह्वान करते हैं।
ग्रैविटी

यह आवश्यक है क्योंकि अगर यह वैकल्पिक होता तो वाक्यविन्यास कुछ स्थितियों में अस्पष्ट होता।
रैंडम 832

20

यह testकमांड के बराबर है ।

के बजाय

if /usr/bin/test -z "$VAR"
then
    echo VAR not set
fi

आप उपयोग कर सकते हैं:

if /usr/bin/[ -z "$VAR" ]
then
    echo VAR not set
fi

यह छोरों में भी इस्तेमाल किया जा सकता है:

i=0
while [ $i -lt 10 ]
do
   echo $i
   ((i++))
done

आप इन्हें इस तरह से वन-लाइनर्स में भी इस्तेमाल कर सकते हैं:

[ -z "$VAR" ] && echo VAR not set && exit

[ -f foo.txt ] && cat foo.txt

2
इसका उपयोग करने के अच्छे उदाहरण। "if / usr / bin / ["
nelaaro
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.