:+
का एक रूप है पैरामीटर विस्तार :
$ {पैरामीटर: + [शब्द]} : वैकल्पिक मूल्य का उपयोग करें।
यदि पैरामीटर परेशान है या अशक्त है, अशक्त प्रतिस्थापित किया जाएगा; अन्यथा, शब्द का विस्तार (या यदि शब्द छोड़ा गया है तो एक रिक्त स्ट्रिंग) प्रतिस्थापित किया जाएगा।
दूसरे शब्दों में, यदि चर $var
को परिभाषित किया गया है, echo ${var:+foo}
तो प्रिंट करेगा foo
और यदि यह नहीं है, तो यह खाली स्ट्रिंग को प्रिंट करेगा।
दूसरा :
कुछ खास नहीं है। यह निर्देशिका में सूची में विभाजक के रूप में उपयोग किया जाने वाला चरित्र है $PATH
। तो, PATH="/usr/local/bin:/usr/bin${PATH:+:${PATH}}"
लिखने का एक संक्षिप्त तरीका है:
if [ -z "$PATH" ]; then
PATH=/usr/local/bin:/usr/bin
else
PATH=/usr/local/bin:/usr/bin:$PATH
fi
सेट नहीं :
होने पर अतिरिक्त जोड़ने से बचने के लिए यह सिर्फ एक चतुर चाल है $PATH
। उदाहरण के लिए:
$ PATH="/usr/bin"
$ PATH="/new/dir:$PATH" ## Add a directory
$ echo "$PATH"
/new/dir:/usr/bin
लेकिन अगर PATH
परेशान है:
$ unset PATH
$ PATH="/new/dir:$PATH"
$ echo "$PATH"
/new/dir:
A :
स्वयं ही वर्तमान निर्देशिका को जोड़ता है $PATH
। इसका उपयोग करने PATH="/new/dir${PATH:+:$PATH}"
से बचा जाता है। इसलिए, PATH="${PATH:+${PATH}:}/usr/local/bin:/usr/bin"
यदि आप चाहें, PATH="$PATH:/usr/local/bin:/usr/bin"
तो आप उपयोग कर सकते हैं या यदि आप चाहें तो उपयोग कर सकते हैं। अंतर केवल इतना है कि पूर्व एक अतिरिक्त जोड़ सकता है :
, जिससे आपकी वर्तमान निर्देशिका आपके पास आ जाएगी $PATH
।