如何在平台LSF的bsub数组作业参数中使用LSB_作业索引?
我想将如何在平台LSF的bsub数组作业参数中使用LSB_作业索引?,lsf,Lsf,我想将LSB_JOBINDEX作为参数传递给脚本,而不是使用环境变量 这使得我的脚本更不依赖LSF,并避免创建使用环境变量的帮助器脚本 但是,我无法在参数中使用LSB_JOBINDEX:它只作为初始命令字符串的一部分工作 例如,在bash shell中,我使用test命令: bsub -J 'myjobname[1-4]' -o bsub%I.log \ 'echo $LSB_JOBINDEX' \ '$LSB_JOBINDEX' \ \$LSB_JOBINDEX \ '$LSB
LSB_JOBINDEX
作为参数传递给脚本,而不是使用环境变量
这使得我的脚本更不依赖LSF,并避免创建使用环境变量的帮助器脚本
但是,我无法在参数中使用LSB_JOBINDEX
:它只作为初始命令字符串的一部分工作
例如,在bash shell中,我使用test命令:
bsub -J 'myjobname[1-4]' -o bsub%I.log \
'echo $LSB_JOBINDEX' \
'$LSB_JOBINDEX' \
\$LSB_JOBINDEX \
'$LSB_JOBINDEX' \
"\$LSB_JOBINDEX"
saybsub2.log
的输出为:
2 $LSB_JOBINDEX $LSB_JOBINDEX $LSB_JOBINDEX $LSB_JOBINDEX
因此,在本例中,仅扩展了第一个$LSB_JOBINDEX
,而没有扩展以下任何一个
但是我不希望像本例中的'echo$LSB_JOBINDEX'
那样将整个命令作为一个巨大的字符串传递。我更喜欢像在常规bash命令中那样使用单独的参数
我也尝试过使用%I
,但它只适用于-o
和相关的bsub
选项,而不适用于命令本身
相关的:
在LSF 10.1.0中测试。相关文档:如果参数以
$
开头,bsub将在参数周围添加单引号。例如如果bsub命令行是
bsub command -a $ARG1 -b $ARG2
然后bsub将在第2个和第4个参数的参数中添加引号。命令的存储方式如下
command -a '$ARG1' -b '$ARG2'
防止这种情况的一种方法是将命令放入脚本中。像这样:
$ cat cmd
echo $LSB_JOBINDEX
echo "line 2"
echo $LSB_JOBINDEX
然后像这样运行您的作业:
$ bsub -I < cmd
Job <2669> is submitted to default queue <normal>.
<<Waiting for dispatch ...>>
<<Starting on hostA>>
0
line 2
0
编辑2
制表符文字也可以使用。并不是说它更好
$ bsub -I echo " \$LSB_JOBINDEX" " \$LSB_JOBINDEX"
Job <2687> is submitted to default queue <normal>.
<<Waiting for dispatch ...>>
<<Starting on hostA>>
0 0
$bsub-I echo“\$LSB\u作业索引”\$LSB\u作业索引”
作业已提交到默认队列。
0 0
谢谢你的回答,Michael。我想避免问题中提到的助手脚本。控制角色的破解很有趣:-)但我想我现在还是坚持使用助手脚本;-)
$ bsub -I echo " \$LSB_JOBINDEX" " \$LSB_JOBINDEX"
Job <2687> is submitted to default queue <normal>.
<<Waiting for dispatch ...>>
<<Starting on hostA>>
0 0