在Bash(或其他shell)中,如何打印具有多行值的环境变量?在shell中打印一个带有多行值的变量?
text='line1
line2'
我知道一个简单的平常echo $text
将无法工作开箱。 会有一些$ IFS调整帮助?
我目前的解决方法是类似于ruby -e 'print ENV["text"]'
。 这可以在纯贝壳中完成吗?我想知道如果env
命令会采取一个未解决的var名称,但它似乎并不。
在Bash(或其他shell)中,如何打印具有多行值的环境变量?在shell中打印一个带有多行值的变量?
text='line1
line2'
我知道一个简单的平常echo $text
将无法工作开箱。 会有一些$ IFS调整帮助?
我目前的解决方法是类似于ruby -e 'print ENV["text"]'
。 这可以在纯贝壳中完成吗?我想知道如果env
命令会采取一个未解决的var名称,但它似乎并不。
export TEST="A\nB\nC"
echo $TEST
给输出:
A\nB\nC
但:
echo -e $TEST
A
B
C
所以,答案似乎是 '-e' 参数呼应,假设我正确理解你的问题。
谢谢,这的确不错..但是在我的情况下,var包含一个真正的LF字符而不是转义序列。现在澄清这个问题。 – inger
为什么向后弯曲倒退?只要做'text ='line1 line2''(因此分配跨越两个文字行),或者如果您对受限的可移植性感到满意,可以使用'text = $'line1 \ nline2''。 –
与bash,将文本转换为变量的方式是'text = $'line1 \ nline2'' –
@WilliamPursell我知道这比我先尝试heredoc更简单,但是这并没有工作..但当然,简单的多行字符串更简单..它只是非常晚,刷新我的bash记忆。谢谢。 – inger