GNU Parallel不接受变量python参数
我有一个python代码,可以为我运行模拟,我需要为许多不同的参数(一个字符串、一个整数和另一个stringy整数)运行该代码。我的问题是,当我尝试将其与GNU并行化时,我的参数的一部分无法通过(我的第一个字符串)。可能对此负责的特定线路是:GNU Parallel不接受变量python参数,python,bash,gnu-parallel,Python,Bash,Gnu Parallel,我有一个python代码,可以为我运行模拟,我需要为许多不同的参数(一个字符串、一个整数和另一个stringy整数)运行该代码。我的问题是,当我尝试将其与GNU并行化时,我的参数的一部分无法通过(我的第一个字符串)。可能对此负责的特定线路是: parallel --bar --eta -j14 'python3 compute-heat-capacity-generational-2 $sim {1} {2}' ::: \ $(seq 16) ::: \ ${gens[@]} 其中,我从pyt
parallel --bar --eta -j14 'python3 compute-heat-capacity-generational-2 $sim {1} {2}' ::: \
$(seq 16) ::: \
${gens[@]}
其中,我从python获得的错误消息是:
回溯(最近一次呼叫最后一次):文件“compute-heat-capacity-generational-2”,第20行,in iterNum=int(argv[3])>索引器:列表索引超出范围 因此,我的参数中只有两个经过处理,在我的平行行中分配给
{1}
和{2}
的参数。无论出于什么原因,当我尝试使用parallel时,$sim
似乎无法正常工作
下面编写了完整的脚本,其中我将simulation目录作为输入,循环遍历该目录以解析生成号,然后将这两个脚本交给parallel,在这里我遍历所有生成,并遍历由${seq 16}
任何关于如何使用parallel的建议都将不胜感激。在过去的几天里,我花了大部分时间阅读手册和示例,但我一直无法解决这个问题。我很确定,问题很简单,我如何给我的参数打上`{}的标签,并向它们提供输入,但我似乎找不到正确的组合来实现这一点
#/bin/bash
echo“选择一个模拟:”
阅读模拟
echo“开始热容计算”
gens=(保存/$sim/isings/*)
#在simulations文件夹中查找所有代,放入阵列中
对于((i=0;i在调用parallel
之前,请尝试在parallel的参数中使用双引号,或者执行导出sim
)
parallel --bar --eta -j14 "python3 compute-heat-capacity-generational-2 $sim {1} {2}" ::: \
$(seq 16) ::: \
${gens[@]}
如果字符串使用单引号(”
),bash不会展开字符串中的变量
如果您执行导出sim卡的操作,则子进程将看到该变量,并且您的变量稍后将展开
是的!这似乎解决了问题。谢谢!使用了双引号,现在我可以睡觉了,因为我知道我的模拟在一夜之间运行。太好了!晚安;p--bar
意味着--eta
所以--eta
是多余的。哦,这很有意义。谢谢!