0

myscript というスクリプトがあり、2 つの引数を取り、次のように実行する必要があるとします。

./myscript 1st 2nd

次のようなテキストファイルもあります。

213 432
312 54
34 41
1 32

問題は、テキスト ファイルの内容を入力として使用して myscript を実行するにはどうすればよいかということです。

入力リダイレクトは、次とまったく同じように実行されるはずです。

./myscript 213 432
./myscript 312 54
./myscript 34 41
./myscript 1 32

ありがとうございました。

また、スクリプトに必要な引数の数がわからない場合はどうすればよいでしょうか?

4

2 に答える 2

2

$IFS で区切られたテキスト ファイルから 2 つの変数に行を読み取り、それを使用while readして myscript を呼び出すことができます。

while read -r A B; do
    ./myscript "$A" "$B"
done < text_file

すべての行を単一の引数として渡すには:

while read -r A; do
    ./myscript "$A"
done < text_file

すべての行の各トークンを引数として渡すには:

while read -ra A; do
    ./myscript "${A[@]}"
done < text_file
于 2013-09-14T19:31:16.037 に答える
1

引数にスペースを保持する必要がない限り、次を使用して無数の引数を管理できます。

while read -r line
do ./myscript $line
done < text_file

スペースを保持したり、引用符を解釈したりする必要がある場合は、おそらく次の方法が最適です。

sed 's%^%./myscript %' text_file | bash

これにより、ファイルの各行の先頭にコマンドが挿入され、スクリプトが実行されますbash

于 2013-09-14T20:07:39.700 に答える