<p>最后我不得不做一些list/string的hacks来让类型与我程序的其他部分所期望的匹配。我也没有意识到我仍然需要匹配参数的名称(我认为顺序会处理这个问题),所以我在这里为任何其他被卡在这一部分的人添加了标志。你知道吗</p>
<p>完整的bash脚本是:</p>
<pre><code>#/usr/bin/bash
i=0
while read a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1 r1 s1
do
i=$(($i+1))
mkdir RUN$i
cp $a1 RUN$i
cd RUN$i
../myprog.py filename $a1 reps $b1 pop $c1 susc $d1 pl_trans $e1 inf_period $f1\ $g1\ $h1\ $i1\ $j1 eps $k1\ $m1\ $n1\ $o1\ $p1\ $q1\ $r1\ $s1
cd ..
done < readparas.txt
</code></pre>
<p>以及myprog.py公司看起来像这样:</p>
<pre><code>if __name__ == "__main__":
#Thanks to http://stackoverflow.com/questions/7605631/passing-a-list-to-python-from-command-line Thomas answer
#At the top, import argparse
#This allows arguments to be parsed from the command line
parser = argparse.ArgumentParser()
parser.add_argument(' filename')
parser.add_argument(' reps')
parser.add_argument(' pop')
parser.add_argument(' susc')
parser.add_argument(' pl_trans')
parser.add_argument(' inf_period', nargs='*')
parser.add_argument(' eps', nargs='*')
args = parser.parse_args()
pop_file = args.filename
susc = float(args.susc)
pl_trans = float(args.pl_trans)
i_period = args.inf_period[0].split()
#args.inf_period is a list; args.inf_period[0] a string
inf_period = [int(i_period[i]) for i in range(len(i_period))]
n_eps = args.eps[0].split()
eps = [float(n_eps[i]) for i in range(len(n_eps))]
reps = int(args.reps)
pop = int(args.pop)
returned_answer = function_in_body(susc, pl_trans, inf_period, eps, reps, pop)
</code></pre>