我想使用一個腳本並行運行多個作業,該腳本對參數化腳本進行串行調用,並在每次調用時將其作為後台作業提交。這是一個暴力腳本,每次呼叫都會執行 10k 種組合中的 1k 種。
以下是我的第一次破解。
#!/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 等。
& 是將腳本作為背景作業提交。被呼叫的模組將傳遞 $1 和 $2 與 seq 一起使用,如下所示
#/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
其本身是行不通的。
至於在 shell 中進行數學計算,請參閱註 2。