次のようなgitリポジトリのSSH URLを出力するスクリプトがあります。
[email protected]:namespace/project.git
[email protected]:another_namespace/some_other_project.git
コマンドgit clone
(または他のコマンド)を各行に対して実行したい。
xargs
にパイピングしてみましたが、出力を1行で取得するか、複数行の入力を1つのコマンドにダンプしました。
どのようにパイプを介して各行で任意のコマンドを実行しますか?
結局のところ、bashでwhile
ループを使用するだけでこれを行うことができます( this answer から変更):
<whatever your command/output is> | while read line; do echo $line; done
ここで、echo
はコマンドであり、$line
各行の出力として、必要に応じて調整できます。
ええ、それは少しトリッキーですが、この例を紹介しましょう:
これがテストデータです
$ 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 '{}'
)を指示してみてください。