看到大家的反应后堆栈溢出关于这个问题以及对 qsub 的不熟悉,我相信 thqt U&L 更适合这个问题。
在 qsub 中,我们可以传递环境变量(以逗号分隔的对列表envar=value
),如下所示:
info="This is some info"
qsub -v INFO=$info script.pbs
但是,当 $info 包含逗号时,这就会出现问题。
info="This is some info, and here is some more!"
qsub -v INFO=$info script.pbs
这将触发如下错误:
错误::
-v
变量“还有更多!”没有在环境变量中设置。
我也尝试过封装info
,INFO="$info"
导致同样的问题。
$info
即使包含一个或多个逗号,我怎样才能正确传递?同样的问题也存在于换行符上,换行符在传递时总是以错误的方式结束(反斜杠被删除)。
也许一个有趣的观察是,当我echo -e $info
得到我期望的输出时。该错误是在qsub
命令中专门触发的。
答案1
您可以通过在命令行上仅给出变量名称(对命令可见)来避免此问题:
export INFO="This is some info, and here is some more!"
qsub -v INFO script.pbs
或者
INFO="This is some info, and here is some more!" qsub -v INFO script.pbs
答案2
qsub -v INFO="$info" script.pbs