将数学方程作为参数传递给循环函数

将数学方程作为参数传递给循环函数

我想使用一个脚本并行运行多个作业,该脚本对参数化脚本进行串行调用,并在每次调用时将其作为后台作业提交。这是一个暴力脚本,每次调用都会运行 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。

相关内容