【问题标题】: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 是最直接的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-03-10
      • 2023-03-27
      • 2017-06-10
      • 2015-02-05
      • 2010-10-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多