gpt4 book ai didi

python - 如何在 bash 中运行会导致参数扫描的 for 循环?

转载 作者:太空宇宙 更新时间:2023-11-04 11:19:32 26 4
gpt4 key购买 nike

我正在创建一个包含受感染和未受感染人群的世界的模拟。在模拟中,我想使用 bash 运行参数扫描以查看来自各种输入的所有结果。

python 文件“diseaseSim_bash.py”接受 10 个命令行参数,其中运行:

python3 diseaseSim_bash.py V 100 5 7 7 5 0.05 0.05 0.05 0.05 > simulation1.txt

将使用 Von Neumann 邻域、100 个未感染、5 个感染、7x7 网格(世界)、5 个时间步长和感染、免疫、死亡和恢复概率为 5% (0.05) 运行模拟。

这很好用,生成了我在 python 文件中创建的图并将它们保存在当前文件夹中。它还为不是图像的输出创建一个文本文件。然而,当我们进行参数扫描时,会遇到一些挑战。

bash 文件 disease_sweep.sh 包含创建一个文件夹的代码,该文件夹具有运行时的时间戳,并将 python 文件和 bash 文件复制到该文件夹​​中以进行模拟。它还接受命令行参数,如下所示:

sh disease_sweep.sh 80 120 5 2 20 2 0.02 0.20 0.02

此代码使未感染人口的下限为 80,上限为 120,以 5 人为步长上升。感染人群的下限为2,上限为20,第2步。最终被感染的概率下限为2%,上限为20%,第2步。

我在下面插入的 block 之前有代码将这些变量作为命令行参数。我不知道是否需要它,所以我暂时没有包含它。该代码还打印出有关命令行输入的详细信息,即。

echo "Bounds for Uninfected and step: " $low_pop $high_pop $step_pop

我没有提供完整代码的原因是上面的代码运行良好,并在我的终端中给出了输出。然而,下一部分似乎没有提供任何结果。

for i in `seq $low_pop $high_pop $step_pop`;
do
for d in `seq $low_inf $high_inf $step_inf`;
do
for x in `seq $low_prob $high_prob $step_prob`;
do
echo "Simulation: " $i $d $x
outfile="Simulation_I"$i"_D"$d"_X"$x".txt"
python3 diseaseSim_bash.py V $i $d 15 15 5 $x 0.05 0.05 0.05 > $outfile
done
done
done

通过这样做,它应该将所有文本数据保存到输出文件中,并且图像也应该存在于文件夹中,但事实并非如此。

我想知道我的 for 循环中是否有错误,我可能已经忽略了。感谢您的帮助,谢谢!

最佳答案

我的 man seq 页面是这样说的:

SYNOPSIS
seq [OPTION]... LAST
seq [OPTION]... FIRST LAST
seq [OPTION]... FIRST INCREMENT LAST

因此,如果您想提供一个步长,那么它必须是第二个 参数。在您的代码中,您似乎将其作为最后一个参数。

确实,seq 2 5 1 产生空输出,而 seq 2 1 5 产生数字 2 到 5。

关于python - 如何在 bash 中运行会导致参数扫描的 for 循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56301653/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com