我有一个输出 git 存储库 SSH URL 的脚本,如下所示:
[email protected]:namespace/project.git
[email protected]:another_namespace/some_other_project.git
我想git clone
为每一行运行命令(或其他命令)。
我尝试将其通过管道传输到xargs
,但我要么在一行中得到输出,要么将多行输入转储到单个命令中。
如何通过管道在每一行上运行任意命令?
答案1
事实证明,您只需使用while
bash 中的循环即可完成此操作(改编自这个答案):
<whatever your command/output is> | while read line; do echo $line; done
您的命令在哪里echo
并使用$line
作为每行的输出,您可以根据需要进行调整。
答案2
是的,这有点棘手,但让我给你展示这个例子:
这是测试数据
$ cat a
1
2
3
以下是你尝试过的(我猜)
$ cat a | xargs echo foo
foo 1 2 3
使用方法如下xargs
:
$ cat a | xargs -I '{}' echo foo '{}'
foo 1
foo 2
foo 3
因此,不要仅仅通过管道将 URL 列表传输到xargs git clone
,而是尝试定义占位符 ( -I '{}'
) 并告诉 xargs 如何处理它 ( git clone '{}'
)。