स्ट्रिंग में बैश चर के बाद अंतरिक्ष से कैसे बचें?


18

मेरे पास रंग के लिए एक चर है। मैं इसे स्ट्रिंग के अंदर का मूल्यांकन करके, स्ट्रिंग को रंग सेट करने के लिए उपयोग करता हूं। हालाँकि, मुझे नाम के बाद स्थान शामिल करने की आवश्यकता है (ताकि नाम पाठ का हिस्सा न हो)। यह कभी-कभी बुरा लगता है।

मैं इस स्थान का उपयोग करने (मुद्रण) से कैसे बच सकता हूं?

उदाहरण (मान लें कि Red=1और NC=2):

echo -e "$Red Note: blabla$NC".

आउटपुट:

1 Note: blabla2.

अपेक्षित उत्पादन:

1Note: blabla2.

जवाबों:


29

बस ब्रेसिज़ में चर संलग्न करें:

echo -e "${Red}Note: blabla${NC}".

पैरामीटर विस्तार के बारे में अधिक विस्तार से देखें ।

यह भी महान जवाब देखें कि प्रिंटो गूंज से बेहतर क्यों है? अगर आप पोर्टेबिलिटी की परवाह करते हैं।


4

प्रिंट करने की आदत में आपको क्या करना चाहिए:

printf '%sNote: blabla%s\n' "$Red" "$NC"

जहां प्रत्येक %sएक चर को प्रतिस्थापित करता है। और इसकी -eज़रूरत नहीं है क्योंकि प्रिंटफ़ ने पोर्टेबल तरीके से बैकस्लैश वैल्यूज़ \ n, \ t आदि को स्वीकार किया है।

याद रखें कि echo -eअन्य गोले के लिए पोर्टेबल नहीं है।

अन्य विकल्प:

आप दो आदेशों का उपयोग कर सकते हैं जो उनके आउटपुट को बदलते हैं:

echo -ne "$Red"; echo -e "Note: blabla$NC"

आप सरल स्ट्रिंग संयोजन का उपयोग कर सकते हैं:

echo -e "$Red""Note: blabla$NC"

या आप { }नाम-पाठ भ्रम से बचने के लिए उपयोग कर सकते हैं :

echo -e "${Red}Note: blabla$NC"
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.