値のリストをbashスクリプトにパイプ

値のリストをbashスクリプトにパイプ

スクリプトがあります。myScript

2つのパラメータが必要です。myScript arg1 arg2

3つの引数の集合があるとしましょう。

argA1 argB1
argA2 argB2
argA3 argB3

各行をmyScriptにパイプする方法はありますか? xargsを使用してファイルにパラメータセットを含めたいです。何を調べるべきか分からない。

したがって、以下の偽の例のようなコマンドを実行します。

cat myFile | xargs > myScript

他のスクリプトは必要なく、コマンドラインからのコマンドだけが必要です。

ベストアンサー1

のみ:

xargs -l1 <myFile myScript

-l1各入力行に対して一度実行し、そのxargs行の単語を別々の引数として渡すように指示します。myScript1 l1 l

の場合、xargs単語はスペースで区切られ、引用符を使用すると、単語内にスペース(または改行)を含めることができます。ただし、引用はほとんどのシェルのようにxargsサポートされていますが、解析はBourneなどのシェルの解析とは異なります。特にnoとonlyはどちらもバックスラッシュを処理せず、改行だけをエスケープできます。"..."'...'\"..."'...'\

たとえば、次のものを含める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"

GNU実装を使用すると、xargs次のように改善できます。

xargs -l1 -r -a myFile myScript

これの利点は、stdinが空myScriptの場合はmyFile実行されず、単独で残すことができることです。

おすすめ記事