ex01
たとえば、(C ++プログラム)という実行可能ファイルがあります。
さまざまなパラメータを使用して、このプログラムの呼び出しセットを含むテキストファイルがあります。
テキストファイルは次のとおりです。
./ex01 command1 > ex.dat &
./ex01 command2 >> ex.dat &
./ex01 command3 >> ex.dat &
...
source
このコマンドを使用してこのタスクを自動化できます。
しかし、私は2つのことを同時にしたいです。どうすればいいですか?
答え1
ファイルをインポートするのではなく、別のシェルで実行する必要があります。このsource
コマンドは、現在のシェルでスクリプトの内容を実行します。
$ cat script.sh
./ex01 command1 > ex.dat;
./ex01 command1 > ex.dat;
...
$ sh script.sh
...
セミコロンは必要ありません。
./ex01 command1 > ex.dat
./ex01 command1 > ex.dat
...
コマンドを並列に実行するには、&
各コマンドの最後にアンパサンド()を追加します。
./ex01 command1 > ex.dat &
./ex01 command1 > ex.dat &
...
どちらのコマンドも単一のファイルに書き込むため、上記の内容は問題になる可能性があります。別のファイルに書き込む必要があります。
./ex01 command1 > ex1.dat &
./ex01 command1 > ex2.dat &
...
またはファイルに追加されます。
./ex01 command1 >> ex1.dat &
./ex01 command1 >> ex2.dat &
...
スクリプトが同じ行を繰り返し繰り返す場合は、ループを使用できます。
# Run 10 times
for i in $(seq 1 10) ; do
./ex01 command1 >> ex1.dat &
done
編集する:パラメータ数が直線的に変更されている場合は、次のループを使用できます。
# Run 10 times
for i in $(seq 1 10) ; do
./ex01 command$i >> ex.dat &
done