我使用两个 shell 脚本来设置并行化。第一个脚本使用 for 循环将环境变量传递给第二个脚本,第二个脚本调用并行,运行 julia 脚本,再次传递变量。
第一个 ( test-loop.sh
) 脚本如下所示:
for i in `seq 1 99`;
do
export my_var=$i
bash ~/PATH/TO/FILE/test-par.sh
done
然后下一个文件 ( test-par.sh
) 如下所示:
#!/bin/bash
parallel julia ~/PATH/TO/FILE/bash-test.jl ::: {$my_var..100..1}
例如,如果我将 替换为 1,上面对并行运行 Julia 的调用可以正常工作$my_var
,但是一旦添加变量,就会出现以下错误:
ERROR: LoadError: ArgumentError: invalid base 10 digit '{' in "{99..100..1}"
Stacktrace:
[1] tryparse_internal(#unused#::Type{Int64}, s::String, startpos::Int64, endpos::Int64, base_::Int64, raise::Bool)
@ Base ./parse.jl:137
[2] parse(::Type{Int64}, s::String; base::Nothing)
@ Base ./parse.jl:241
[3] parse(::Type{Int64}, s::String)
@ Base ./parse.jl:241
[4] top-level scope
我不知道如何重新格式化并行调用来解决这个问题。任何帮助非常感谢!
答案1
简单的答案就是eval
像这样添加:
eval "parallel julia ~/PATH/TO/FILE/bash-test.jl ::: {$my_var..100..1}"