2009-06-30 9 views
6

क्या किसी को पता है कि: = के लिए क्या है? googlingबैश स्क्रिप्ट क्या है: = के लिए?

मैंने कोशिश की लेकिन यह गूगल सभी प्रतीक फिल्टर लगता है?

मैं जानता हूँ कि नीचे की जाँच करता है, तो चर घर एक निर्देशिका है और फिर कुछ रिक्त स्ट्रिंग के बराबर नहीं है की तरह कुछ है।

if [ "${HOME:=}" != "" ] && [ -d ${HOME} ] 

उत्तर

14

Bash Reference Manual से:

${parameter:=word}

तो पैरामीटर सेट नहीं है या रिक्त है, शब्द के विस्तार पैरामीटर को सौंपा गया है। पैरामीटर का मान तब प्रतिस्थापित किया गया है। पोजिशनल पैरामीटर और विशेष पैरामीटर इस तरह से असाइन नहीं किए जा सकते हैं।

मूल रूप से यह parameter करने के लिए word का मूल्य प्रदान करेंगे यदि और केवल यदि parameter सेट नहीं है या रिक्त है।

+0

दो से एक सेकंड :) –

+0

द्वारा मुझे मारो और मेरे;) – bedwyr

+0

मैंने देखा है: का एक बहुत = स्थानों। आम तौर पर मैंने इसे पढ़ा है "द्वारा परिभाषित"। सी ++ में, सी #, जावा (+ सौ अन्य स्थान): = बराबर =। और जब यह सच है, ussually = बराबर ==। वाह - वह मेरे द्वारा एक सूक्ष्म बिंदु था। खुद को समझाने में बहुत बुरा होने के लिए खेद है :) – cwap

1

बैश आदमी पृष्ठ से:

असाइन डिफ़ॉल्ट मान। यदि पैरामीटर अनसेट या शून्य है, तो शब्द का विस्तार पैरामीटर पर असाइन किया गया है। पैरामीटर का मान प्रतिस्थापित किया जाता है। पोजिशनल पैरामीटर और विशेष पैरामीटर इस तरह से असाइन नहीं किए जा सकते हैं।

मैन पृष्ठों एक अद्भुत बात है। man bash आपको लगभग हर चीज बताएगा जिसे आप बैश के बारे में जानना चाहते हैं।

0

यहां "${HOME:=}" एक कम या कम नो-ऑप है, क्योंकि यह सेट होने पर $ HOME लौटाता है और कुछ भी नहीं है।

if [ "${HOME:=}" != "" ] && [ -d ${HOME} ] 

यह हूबहू कार्य करेगा:

if [ "${HOME}" != "" ] && [ -d ${HOME} ] 

आप बराबर के चिह्न के बाद कुछ था, तो if के पहले भाग हमेशा सच हो जाएगा।

if [ "${HOME:=here}" != "" ] && [ -d ${HOME} ] 

जो भी हुआ वह आपको हमेशा एक स्ट्रिंग प्राप्त करेगा जो "" के बराबर नहीं है।

बहरहाल, यह है कि क्या $ HOME और $ डिफ़ॉल्ट दोनों अशक्त थे पर निर्भर करेगा:

if [ "${HOME:=$DEFAULT}" != "" ] && [ -d ${HOME} ] 
+0

यह काफी नो-ऑप नहीं है, क्योंकि अगर $ HOME अपरिभाषित है, तो यह खाली स्ट्रिंग पर सेट हो जाएगा। – camh

+0

@camh: बैश में, एक अपरिभाषित चर के बीच वस्तुतः कोई अंतर नहीं है और एक शून्य मूल्य के साथ। –

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