我正在创建一个模拟,其中包含一个世界,其中包含被感染和未被感染的种群。在模拟中,我想使用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%。
我在下面插入的块之前有一些代码,这些代码将这些变量用作命令行参数。我不知道是否需要它,所以我现在还没有包括它。该代码还会打印出有关命令行输入的详细信息,即
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
这样做,它应该已经将所有文本数据保存到outfile中,并且图像也应该存在于文件夹中,但是事实并非如此。
我想知道我的for循环中是否有错误,可能是我遇到的问题。感谢您的任何帮助,谢谢!
答案 0 :(得分:3)
我的man
的{{1}}页面说:
seq
因此,如果要提供步长,则该宽度必须为 second 参数。在您的代码中,似乎您将它作为最后一个参数。
实际上,SYNOPSIS
seq [OPTION]... LAST
seq [OPTION]... FIRST LAST
seq [OPTION]... FIRST INCREMENT LAST
产生空输出,而seq 2 5 1
产生2到5。