パラメータ化されたスクリプトをシリアル呼び出しし、各呼び出しでバックグラウンド ジョブとして送信するスクリプトを使用して、複数のジョブを並行して実行したいと考えています。これは、各呼び出しで合計 10,000 の組み合わせのうち 1,000 を実行するブルート フォース スクリプト用です。
以下は私の最初のハックです。
#!/bin/bash
for i in $(seq 10)
do
./tmp/tmpsky/bd25Par.sh (i*1000-1000) (i*1000) &
done
$1 を 0、1000、2000 などと評価し、$2 を 1000、2000、3000 などと評価したいです。
& はスクリプトをバックグラウンドジョブとして送信します。呼び出されたモジュールは次のように seq で使用される $1 と $2 を渡します。
#/bin/bash/
for n in $(seq $1 1 $2)
do
...`
最初のスクリプトは失敗します
unexpected token 'i*1000-1000'
何を間違えたのでしょうか?
答え1
最初のスクリプトは失敗します
unexpected token 'i*1000-1000'
何を間違えたのでしょうか?
$i
明らかなエラーは、ループ内で実際に変数を呼び出さないことです。
for i in $(seq 10)
do
./tmp/tmpsky/bd25Par.sh (i*1000-1000) (i*1000) &
done
そのはず:
for i in $(seq 10)
do
./tmp/tmpsky/bd25Par.sh ($i*1000-1000) ($i*1000) &
done
したがって、$i
変数を使用するときに を使用します。i
それ自体では機能しません。
シェル内での計算に関しては、コメント番号 2 を参照してください。