10

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

LINES=$(df)
echo $LINES

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

例子:

如果输出应该是:

1
2
3

然后我会得到

1 2 3

如何将命令的输出放入一个变量中,允许新行仍然是新行,所以当我打印变量时,我会得到正确的输出?

4

2 回答 2

14

在大多数情况下,通常在 bash$v中是自找麻烦。几乎总是你真正的意思是"$v"引号

LINES="$(df)"
echo "$LINES"
于 2012-01-03T13:43:45.260 回答
7

不,它不会。唯一的$(something)带尾换行符。

echo 参数的扩展在空格上拆分,然后 echo 将单独的参数与空格连接起来。要保留空格,您需要再次引用:

echo "$LINES"

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

于 2012-01-03T13:47:56.770 回答