たとえば、次の2つのパラメータを必要とするPerlスクリプトがあります。
./PerlScript 0001 192.168.100.200
ただし、このスクリプトの実行には時間がかかります(40x)。
./PerlScript 0003 192.168.100.202
./PerlScript 0061 192.168.100.205
./PerlScript 0061 192.168.100.206
...
...
...
PerlScriptの後にパラメータを自動的に挿入する必要がありますが、どうすればよいですか?ファイルからロードしますか、または配列を作成しますか?
答え1
パラメータリストが次のように "thelist"ファイルにあるとします。
0001 192.168.100.200
0003 192.168.100.202
0061 192.168.100.205
0061 192.168.100.206
あなたはできます:
printf "./PerlScript %s %s\n" $(cat thelist) | bash
あなたの例のように、これは順番に実行されます。
に変更
printf "./PerlScript %s %s & \n" $(cat thelist) | bash
バックグラウンドで起動するようにします(ただし、コンピュータがダウンしないように注意してください...)。
答え2
パラメータがファイルに保存されている場合は、これを行う適切な方法はを使用することですxargs
。
このxargs
ユーティリティは、標準入力から読み取った引数を使用して別のプログラムを実行します。
そして
xargs -n 2 ./PerlScript <list.in
xargs
./PerlScript
現在のディレクトリのファイル-n 2
から取得した2つの引数()を使用して一度に実行されます。list.in
ファイルはlist.in
次のようになります。
0001 192.168.100.200
0003 192.168.100.202
0061 192.168.100.205
0061 192.168.100.206
または
0001
192.168.100.200
0003
192.168.100.202
0061
192.168.100.205
0061
192.168.100.206
xargs
パラメータはパイプから読み取ることもできます。
somecommand | xargs -n 2 ./PerlScript
以下は、前の例で使用したのとsomecommand
同じ形式で出力を生成するいくつかのコマンドです。list.in