我正在用bash编写脚本,我希望它能够执行命令并分别处理每一行。例如:
LINES=$(df)
echo $LINES
它将返回所有输出转换带空格的新行。
示例:
如果输出应该是:
1
2
3
然后我会得到
1 2 3
如何将命令的输出放入变量中,使新行仍然是新行,这样当我打印变量时,我会获得正确的输出?
答案 0 :(得分:11)
一般情况下,bash $v
在大多数情况下都会遇到麻烦。几乎总是你真正的意思是双引号"$v"
。
LINES="`df`" # double-quote + backtick
echo "$LINES"
OLDPATH="$PATH"
答案 1 :(得分:6)
不,它不会。 $(something)
仅删除尾随换行符。
对于空格和echo的echo分裂参数的扩展将单独的参数与空格连接起来。要保留空白,您需要再次引用:
echo "$LINES"
请注意,不的作业需要引用;在赋值给变量和case
的参数中,扩展的结果不是分词。但它可以被引用,并且更容易学习只是总是把引号放进去。