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

h7appiyu  于 2023-08-07  发布在  Shell
关注(0)|答案(1)|浏览(114)

在qsub中,我们可以像这样传递环境变量:

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命令中触发的。

2skhul33

2skhul331#

我刚刚在qsub man-page上发现,没有记录的方法可以让选项 *-v variable[=value],... * 安全地将逗号放入 value 中。也许有一种没有文档记载的方法,你可以通过研究 qsub 的源代码来找到。
但是,有一个解决方案:如果我们只指定-v variable而不提供值,它会将 variable 解释为当前环境中的环境变量,并使用其值。在您的情况下,这意味着您可以执行

export INFO="some string, having commas"
qsub -v INFO script.pbs

字符串

相关问题