GNU/Linux >> Linux の 問題 >  >> Linux

値のリストをBashスクリプトにパイプしますか?

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


Linux
  1. Bashスクリプトをファイルに接続できますか?

  2. バッシュ‘?

  3. Bash for ループの例

  1. 代替 --config Java bash スクリプト

  2. bash スクリプトをデーモンとして実行する

  3. パスに bash スクリプトを追加する

  1. IP アドレスを抽出する Linux bash スクリプト

  2. Bash スクリプトのパターン マッチング

  3. jenkins パイプラインで bash コマンドを実行する