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