【问题标题】:Using information/result from a command in OS X terminal在 OS X 终端中使用命令的信息/结果
【发布时间】:2014-06-29 21:41:18
【问题描述】:
我正在 OS X 上编写一个 shell 脚本,但我不知道如何重用返回的值并将它们保存为变量。例如,如果我在终端内输入命令“git submodule foreach --recursive”,我会打印 3 行,如下所示:
Entering 'path/of/submodule/1'
Entering 'path/of/submodule/2'
Entering 'path/of/submodule/3'
现在我想使用这些路径字符串在我的脚本中进行进一步操作。所以我需要将它们保存在一个数组中......这是我第一次尝试 shell 脚本,所以非常欢迎任何建议。
【问题讨论】:
标签:
macos
terminal
console
【解决方案1】:
典型的方法是将标准输出提供给 while 循环:
git submodule foreach --recursive \
| while read line ; do
echo Processing $line
...
done
要严格回答您的问题,您还可以使用
将命令的结果分配给变量
a=$(git submodule foreach --recursive)
如果您希望 a 成为一个数组,请使用
a=($(git submodule foreach --recursive))
但是 bash 倾向于在空白处拆分,因此在包含空格的字符串上使用该语法时需要小心,并且您希望在换行符处拆分。
如果您的目标只是一次处理一行输出,while 是最直接的。