確かに。これはinput.txt
であると仮定します。
source1.txt dest1.txt
source2.txt dest2.txt
...
そして、あなたはこれをしたい:
while read i o; do
command $i $o
done < input.txt
これは、それが最初だからコマンドcommand
を既に読んするように構成されていることを前提としています。ここ
command source1.txt dest1.txt
command source2.txt dest2.txt
...
は方法です引数を指定して、その2番目の引数に書き込みます。代わりに
command
がstdout(端末画面)に出力された場合は、
command $i $o
を
command $i > $o
に置き換えてください。これはまた、
input.txt
にスペースや面白い文字がないことを前提としています。
input.txt
には、たとえば、
awk '{printf "command %s\n", $0}' input.txt | sh
それとも、あなたはcommand $i > $o
使用する必要がある場合:
awk '{printf "command %s > %s\n", $1, $2}' input.txt | sh
この方法は、第二のために最初の行、command source2.txt dest2.txt
ためINPUT.TXTや印刷物command source1.txt dest1.txt
から行を読み込み、などをライン以上の何百万人...そして、それらを実行するshへのそれらのコマンドを "パイプ"します(|
)。 command
のエラー処理については
、試してみてください。
while read i o; do
command $i $o || command2 $i $o >> command2.log
done < input.txt 2> error.log
または:
done <input.txt> error.log 2>&1
を(これらのうちの一つが標準出力に自分のエラーを印刷command
かとcommand2
に応じて、より良い動作します(1)またはstderr(2)を使用します。)
ありがとうWebb、私はそれを試してみました。私はいくつかのコマンドで失敗しました。結果を確認できる方法はありますか?失敗した場合は、コマンド自体を少し修正して実行する必要があります。また、すべてのコマンドが実行されると、ログの詳細がログファイルにロードされます。読んでいる間は以下のようにi o; コマンドを実行します$ I $ O \t結果(良い) \t次の反復他 \t \t command2の$ I $ Oが< input.txt >出力log.txtという – Hemanth
要求されます追加のエラー処理を行っている場合 – webb