2014-06-29 115 views
2

我正在OS X上编写一个shell脚本,我不知道如何重用返回的值并将它们保存为变量。例如,如果我输入命令“混帐子模块的foreach --recursive”终端里面我得到印刷3行,像这样:在OS X终端中使用命令的信息/结果

Entering 'path/of/submodule/1' 
Entering 'path/of/submodule/2' 
Entering 'path/of/submodule/3' 

现在我想用这些路径弦乐我的脚本中进一步处理。所以我需要将它们保存在可能是Array的东西中....?这是我第一次尝试shell脚本,所以任何建议都非常受欢迎。

回答

0

的典型方法是喂标准输出与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是最直接的。