在变量中放置多行输出

时间:2012-01-03 13:41:50

标签: bash bash4

我正在用bash编写脚本,我希望它能够执行命令并分别处理每一行。例如:

LINES=$(df)
echo $LINES

它将返回所有输出转换带空格的新行。

示例:

如果输出应该是:

1
2
3

然后我会得到

1 2 3

如何将命令的输出放入变量中,使新行仍然是新行,这样当我打印变量时,我会获得正确的输出?

2 个答案:

答案 0 :(得分:11)

一般情况下,bash $v在大多数情况下都会遇到麻烦。几乎总是你真正的意思是双引号"$v"

LINES="`df`"     # double-quote + backtick
echo "$LINES"
OLDPATH="$PATH"

答案 1 :(得分:6)

不,它不会。 $(something)仅删除尾随换行符。

对于空格和echo的echo分裂参数的扩展将单独的参数与空格连接起来。要保留空白,您需要再次引用:

echo "$LINES"

请注意,的作业需要引用;在赋值给变量和case的参数中,扩展的结果不是分词。但它可以被引用,并且更容易学习只是总是把引号放进去。