将包含逗号的变量作为 -v 选项传递给 qsub

将包含逗号的变量作为 -v 选项传递给 qsub

看到大家的反应后堆栈溢出关于这个问题以及对 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变量“还有更多!”没有在环境变量中设置。

我也尝试过封装infoINFO="$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

相关内容