2012-09-17 2 views
15

बैश (या अन्य गोले) में मैं एक पर्यावरण चर मुद्रित कैसे कर सकता हूं जिसमें बहु-रेखा मान है?शैल में बहु-रेखा मान के साथ एक चर मुद्रित करें?

text='line1 
line2' 

मैं जानता हूँ कि एक साधारण सामान्य echo $text बॉक्स से बाहर काम नहीं करेगा। कुछ $ IFS tweak मदद करेगा?

मेरा वर्तमान वर्कअराउंड ruby -e 'print ENV["text"]' जैसा कुछ है। क्या यह शुद्ध खोल में किया जा सकता है? मैं सोच रहा था कि env कमांड एक अनसुलझे var नाम लेगा लेकिन ऐसा प्रतीत नहीं होता है।

+0

बैकटिक्स के साथ पीछे की तरफ झुकना क्यों? यदि आप प्रतिबंधित पोर्टेबिलिटी से खुश हैं तो बस 'text =' line1 लाइन 2 '(इसलिए असाइनमेंट टेक्स्ट की दो अक्षर पंक्तियों को फैलाता है), या' text = $ 'line1 \ nline2''' करें। –

+1

बैश के साथ, उस पाठ को एक चर में प्राप्त करने का तरीका 'text = $' line1 \ nline2'' –

+0

@ विलियमपर्सेल मुझे पता था कि यह पहले से ही आसान था, मैंने पहले हेड्रोक की कोशिश की लेकिन यह काम नहीं किया .. लेकिन निश्चित रूप से सादा मल्टीलाइन स्ट्रिंग सरल है .. यह मेरी बैश यादों को ताज़ा करने में बहुत देर हो चुकी है। धन्यवाद। – inger

उत्तर

28

हमेशा के समान समाधान।

A\nB\nC 

लेकिन:

echo -e $TEST 
A 
B 
C 

तो, इस सवाल का जवाब प्रतिध्वनित करने के लिए '-e' पैरामीटर होने के लिए, यह मानते हुए लगता है

echo "$text" 
+1

क्षमा करें, यह echo $ text से अलग कैसे है? – inger

+3

दोहरे उद्धरण हैं, जो बाश में शब्द विभाजन को रोकते हैं। –

+0

यह धन्यवाद है! खेद है कि मुझे एहसास नहीं हुआ कि समस्या शब्द थूक रहा था .. – inger

2
export TEST="A\nB\nC" 
echo $TEST 

उत्पादन देता है कि मैं आपके प्रश्न को सही ढंग से समझता हूं।

+2

धन्यवाद, यह वास्तव में अच्छा है .. हालांकि मेरे परिदृश्य में var में भागने के क्रम में वास्तविक एलएफ चार होता है। अब सवाल स्पष्ट कर रहा है। – inger

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