我正在尝试使用 bsub 向 LSF 调度程序提交命令,但此命令包含一个必须用引号引起来并包含分号的参数值。
这是一个简单的命令来说明我的问题
bsub -o t.o -e t.e echo "foo;bar"
Run Code Online (Sandbox Code Playgroud)
它因“第 8 行:bar:未找到命令”而失败,所以我以为我可以转义分号,但是这
bsub -o t.o -e t.e echo "foo\;bar"
Run Code Online (Sandbox Code Playgroud)
导致同样的错误,这也是
bsub -o t.o -e t.e echo 'foo;bar'
Run Code Online (Sandbox Code Playgroud)
我知道我可以通过将命令写入脚本文件并将其作为 bsub 命令执行来解决它,但在这种情况下,我将测试许多参数,并且只修改 bsub 命令而不是每次编辑一个shell脚本。
谢谢你的帮助!
我能想到的一种简单方法是使用 的bsub子 shell 接口:只需bsub <options>从命令行执行而不指定命令。 bsub然后将提示您在子 shell 中输入命令,并且您可以在此子 shell 中使用引号。
向子 shell 发送文件结束符 (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
%
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
801 次 |
| 最近记录: |