スクリプトがあります。 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
の場合 空です。