मुझे समझ में क्यों बैश दोहरे उद्धरण चिह्नों (लेकिन एक नहीं उद्धरण) को हटा जब, ${parameter:+word}
(उपयोग वैकल्पिक मूल्य) के साथ चर विस्तार कर यहां-दस्तावेज़ में कोशिश कर रहा हूँ, उदाहरण के लिए:
% var=1
% cat <<EOF
> ${var:+"Hi there"}
> ${var:+'Bye'}
> EOF
Hi there
'Bye'
अनुसार मैनुअल के लिए, :+
के बाद "शब्द" टिल्ड विस्तार, पैरामीटर विस्तार, कमांड प्रतिस्थापन, और अंकगणितीय विस्तार के साथ संसाधित किया जाता है। इनमें से कोई भी कुछ नहीं करना चाहिए।
मुझे क्या याद आ रही है? मैं विस्तार में दोहरे उद्धरण कैसे प्राप्त कर सकता हूं?
एक बग या कार्यान्वयन लीकिंग की तरह लगता है। एक परिवर्तनीय को असाइन किए बिना वैकल्पिक मूल्य के रूप में डबल कोट का उपयोग करना असंभव है: 'dq = '' '; ... $ {var: + $ dq}' – choroba
@choroba: '$ {var: + $ (गूंज '' ')}}' लेकिन मैं मूल रूप से सहमत हूं। उद्धृत पैरामीटर विस्तार में 'शब्द' की पार्सिंग में कुछ अजीब बात है (मैनुअल के मुताबिक, यहां दस्तावेज़ों में पैरामीटर विस्तार उद्धृत किए गए हैं, और यह मामला प्रतीत होता है।) – rici
यहां लगभग समकक्ष दस्तावेज़ को एक गूंज "..." के रूप में देखा जा सकता है, और इस मामले में, "कमांड प्रॉम्प्ट पर" echo "$ {var: +" हाय वहाँ "} टाइप करके बस हटा दिया जाता है। वे उपयोग करते समय वापस आते हैं \ "लेकिन यहां दस्तावेज़ संगत नहीं है और \" इसके बजाय आउटपुट पर "उत्पन्न करता है। कुछ स्पष्ट रूप से सही नहीं है। – Gunstick