【发布时间】:2014-12-22 22:02:39
【问题描述】:
我在尝试循环以下内容的 BASH 代码中遇到换行问题:
bash-4.3$ vboxmanage list vms
"node1" {280482b5-3913-4019-aa9a-383f1f3131a1}
"test_default_1419033096698_75346" {9a2f7b6b-33d8-4997-9c35-9b86f3d183b6}
知道了,我在下面得到了意想不到的结果
for name in $(vboxmanage list vms); do
echo "==> $name"
done
## Prints
==> "node1"
==> {280482b5-3913-4019-aa9a-383f1f3131a1}
==> "test_default_1419033096698_75346"
==> {9a2f7b6b-33d8-4997-9c35-9b86f3d183b6}
我希望得到以下内容?
==> "node1" {280482b5-3913-4019-aa9a-383f1f3131a1}
==> "test_default_1419033096698_75346" {9a2f7b6b-33d8-4997-9c35-9b86f3d183b6}
所以我尝试这样做,然后......
for name in "$(vboxmanage list vms)"; do
echo "==> $name"
done
==> "node1" {280482b5-3913-4019-aa9a-383f1f3131a1}
"test_default_1419033096698_75346" {9a2f7b6b-33d8-4997-9c35-9b86f3d183b6}
结果如预期在一行中......
我很好奇的是为什么第一个示例会这样做,我很清楚应该使用while loop 读取多行。我对它为什么这样做更好奇,我对将for 实现为解决方案不感兴趣。
【问题讨论】:
-
这是BashFAQ/001。
-
-
@DavidRavetti 刚刚发现,它应该是双引号,我解决了这个问题
-
为什么?分词+路径名扩展...