2012-09-17 17 views
15

Bash (veya diğer kabuklar) içinde çok satırlı bir değere sahip bir ortam değişkenini nasıl yazdırabilirim? Kabukta çok satırlı değere sahip bir değişken yazdırın mı?

text='line1 
line2' 

ben basit olağan echo $text kutunun dışında çalışmaz biliyorum. Bazı $ IFS tweak yardım ister misiniz?

Geçerli geçici çözümüm, ruby -e 'print ENV["text"]' gibi bir şeydir. Bu, saf kabukta yapılabilir mi? env komutunun çözümlenmemiş bir var adı alıp almayacağı merak ediyordum ama görünmüyor.

+0

Neden backticks ile geriye doğru bükün? Kısıtlı taşınabilirlikten memnunsanız, text = 'line1 line2'' (ödev iki metin satırını kapsar) veya 'text = $' line1 \ nline2 'komutunu kullanın. Bash ile –

+1

, bu değişkeni bir metne dönüştürmenin yolu 'text = $' line1 \ nline2'' –

+0

@WilliamPursell Daha önce heredisini denediğimden daha kolay olduğunu biliyordum ama bu işe yaramadı .. ama tabiki Düz çok satırlı dize daha basittir ... Bash anılarımı yenilemek için sadece çok geç. Teşekkürler. – inger

cevap

28

Her zamanki gibi aynı çözüm.

A\nB\nC 

ama:

echo -e $TEST 
A 
B 
C 

Yani, cevap varsayarak yankılanmaya '-e' parametresi olarak görünüyor

echo "$text" 
+1

Üzgünüz, bu nasıl echo $ metinden farklı? – inger

+3

Bash'ta kelime bölünmesini engelleyen çift tırnak işareti vardır. –

+0

Bu kadar teşekkürler! üzgünüm sorun burada kelime tükürme fark etmedi .. – inger

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

çıktı verir sorunuzu doğru anladım.

+2

teşekkürler çalıştı o .. Ancak benim senaryoda var hakiki LF kömürü yerine kaçış dizisi içeriyor gerçekten güzel. Şimdi soruyu açıklığa kavuşturmak. – inger