將數學方程式作為參數傳遞給循環函數

將數學方程式作為參數傳遞給循環函數

我想使用一個腳本並行運行多個作業,該腳本對參數化腳本進行串行調用,並在每次調用時將其作為後台作業提交。這是一個暴力腳本,每次呼叫都會執行 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。

相關內容