2012-09-17 47 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