スクリプトがあります。 myScript 。
2つの引数が必要です。 myScript arg1 arg2 。
3セットの引数があるとしましょう。
argA1 argB1
argA2 argB2
argA3 argB3
各行をmyScriptにパイプする方法はありますか?私はファイルに一連のargsを含めることにオープンであり、おそらくxargsを使用します。何を調査すればよいかわからない。
したがって、以下の偽の例のようなコマンドを実行します:
cat myFile | xargs > myScript
別のスクリプトは必要ありません。コマンドラインでコマンドを実行するだけです。
承認された回答:
ただ:
xargs -l1 <myFile myScript
-l1 xargsに通知します myScriptを実行するには 1ごとに1回 l その1の単語を含む入力のine l ineは個別の引数として渡されます。
xargsの場合 、単語は空白で区切られます。引用符を使用すると、単語に空白(改行も含む)を含めることができます。ただし、xargs "..."をサポート 、'...' および\ ほとんどのシェルのように引用する場合、その構文解析はボーンのようなシェルの構文解析とは異なります。特に、どちらの"..."にもバックスラッシュ処理はありません。 また、'...' \のみ 改行をエスケープできます。
たとえば、myFile 含む可能性があります:
word1.1 word1.2
"word 2.1" 'word 2.2'
"word'3.1" 'word"3.2'
'word"'"4'1" word\"4\'2
'word '\
5.1 "word "\
5.2
そして
xargs -l1 <myFile printf 'First word: "%s", second word: "%s"\n'
生成されます:
First word: "word1.1", second word: "word1.2"
First word: "word 2.1", second word: "word 2.2"
First word: "word'3.1", second word: "word"3.2"
First word: "word"4'1", second word: "word"4'2"
First word: "word
5.1", second word: "word
5.2"
xargsのGNU実装を使用 、次のように改善できます:
xargs -l1 -r -a myFile myScript
これには、stdinをそのままにして、myScriptを実行しないという利点があります。 myFileの場合 空です。