2012-09-17 78 views
15

在Bash(或其他shell)中,如何打印具有多行值的環境變量?在shell中打印一個帶有多行值的變量?

text='line1 
line2' 

我知道一個簡單的平常echo $text將無法​​工作開箱。 會有一些$ IFS調整幫助?

我目前的解決方法是類似於ruby -e 'print ENV["text"]'。 這可以在純貝殼中完成嗎?我想知道如果env命令會採取一個未解決的var名稱,但它似乎並不。

+0

爲什麼向後彎曲倒退?只要做'text ='line1 line2''(因此分配跨越兩個文字行),或者如果您對受限的可移植性感到滿意,可以使用'text = $'line1 \ nline2''。 –

+1

與bash,將文本轉換爲變量的方式是'text = $'line1 \ nline2'' –

+0

@WilliamPursell我知道這比我先嚐試heredoc更簡單,但是這並沒有工作..但當然,簡單的多行字符串更簡單..它只是非常晚,刷新我的bash記憶。謝謝。 – inger

回答

28

一如既往的解決方案。

echo "$text" 
+1

對不起,這與echo $ text有什麼不同? – inger

+3

有雙引號,禁止在bash中分詞。 –

+0

這就是它的感謝!對不起,我沒有意識到這個問題是在這裏隨地吐痰...... – inger

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

給輸出:

A\nB\nC 

但:

echo -e $TEST 
A 
B 
C 

所以,答案似乎是 '-e' 參數呼應,假設我正確理解你的問題。

+2

謝謝,這的確不錯..但是在我的情況下,var包含一個真正的LF字符而不是轉義序列。現在澄清這個問題。 – inger