我想使用各种参数多次运行 python 脚本。为此,我编写了以下 bash 脚本:
requests=(25 50 75 100)
factors=(3 6)
graphsizes=(25 50 75)
for request in "${requests[@]}"; do
for factor in "${factors[@]}"; do
for size in "${graphsizes[@]}"; do
echo "Now Running: n = ${request}, factor = ${factor}, size = ${size}" >> nohup.out;
echo nohup python3 -u main.py "$request" 50 "$factor" "$size" > ${request}_${factor}_${size}.log &
echo "Done Running: n = ${request}, factor = ${factor}, size = ${size}" >> nohup.out;
done
done
done
我;
在第一个和最后一个末尾添加,echo
因为我不希望它们并行运行。事实上,我希望对 python 脚本的每次调用main.py
都按顺序而不是并行运行,因为脚本本身已经并行化并且不想要任何竞争条件。
我知道通常我们使用 a;
来使作业按顺序运行,但是如果我&
在 nohup 行之后这样做,我会收到错误
syntax error near unexpected token `;'
如何使循环的每次迭代按顺序运行?