![将数学方程作为参数传递给循环函数](https://linux22.com/image/95322/%E5%B0%86%E6%95%B0%E5%AD%A6%E6%96%B9%E7%A8%8B%E4%BD%9C%E4%B8%BA%E5%8F%82%E6%95%B0%E4%BC%A0%E9%80%92%E7%BB%99%E5%BE%AA%E7%8E%AF%E5%87%BD%E6%95%B0.png)
我想使用一个脚本并行运行多个作业,该脚本对参数化脚本进行串行调用,并在每次调用时将其作为后台作业提交。这是一个暴力脚本,每次调用都会运行 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。