5

我正在尝试使用 bsub 向 LSF 调度程序提交命令,但此命令包含一个必须引用的参数值并包含一个分号。

这是一个简单的命令来说明我的问题

bsub -o t.o -e t.e echo "foo;bar"

它因“第 8 行:bar:找不到命令”而失败,所以我想我可以转义分号,但这

bsub -o t.o -e t.e echo "foo\;bar"

导致同样的错误,所以这样做

bsub -o t.o -e t.e echo 'foo;bar'

我知道我可以通过将命令写入脚本文件并将其作为 bsub 命令执行来解决它,但在这种情况下,我将测试一些参数,只修改 bsub 命令会更方便,而不是每次编辑一个shell脚本。

谢谢你的帮助!

4

1 回答 1

2

我能想到的一种简单方法是使用bsub的子shell 接口:只需bsub <options>从命令行执行而不指定命令。 bsub然后将提示您在子外壳中输入命令,您可以在此子外壳中使用引号。

向 subshel​​l 发送一个文件结尾 (CTRL+D) 让它知道你已经完成了。这是一个使用与您的案例类似的示例运行但以交互方式运行而不是-o用于捕获输出的示例:

%  bsub -I
bsub> echo "foo;bar"
bsub>       <================[### Hit CTRL+D here ###]
Job <5841> is submitted to default queue <normal>.
<<Waiting for dispatch ...>>
<<Starting on hb05b10>>
foo;bar
%
于 2015-06-05T18:35:16.963 回答