The*_*h1n 5 scripting io-redirection arguments platform-lsf
我目前正在使用 Platform LSF 的 bsub 作业提交系统。我需要提交作业脚本,但我遇到了将参数传递给作业脚本的问题。
我需要的内容如下:作业脚本是一个 bash 脚本,它接受一个命令行参数。我需要将参数传递给该脚本,然后将要用作输入的脚本重定向到 bsub。问题是该参数没有应用于脚本。
我试过了: bsub < script.bsub 1
script.bsub 是我的脚本,1 是数字参数。这种方法行不通。1 被视为 bsub 的参数。
另一种方法:bsub < "script.bsub 1"
这种方法使 bsub 将整个双引号行视为文件名。
有没有办法先将命令行参数应用于脚本,然后将该脚本与参数重定向到另一个程序作为输入?如果有人对 bsub 有经验,那就更好了。
更新和解决方法:
似乎将命令行参数应用于 bsub 文件是一个非常复杂的过程。我尝试了下面所述的 HEREDOC 方法,但 bsub 的行为好像脚本文件名是一个命令。所以解决这个问题的最简单方法就是根本不使用输入重定向。
要将参数传递给要在 bsub 中运行的脚本,首先要在命令行中而不是在脚本文件中指定所有 bsub 参数。然后运行脚本文件,使用
"sh script.sh [arg]"
Run Code Online (Sandbox Code Playgroud)
在所有 bsub 参数之后。因此,整行看起来像:
bsub -q [queue] -J "[name]" -W 00:10 [other bsub args] "sh script.sh [script args]"
Run Code Online (Sandbox Code Playgroud)
这不能回答我最初的问题,但至少对于 bsub,这是解决我的问题的最简单方法。
似乎将命令行参数应用于 bsub 文件是一个非常复杂的过程。我尝试了 mikeserv 规定的 HEREDOC 方法,但 bsub 的行为就像脚本文件名是命令一样。因此,解决此问题的最简单方法就是根本不使用输入重定向。
由于我的问题特别涉及 Platform LSF 的 bsub,因此以下可能是解决此类参数问题的最佳方法:要将参数传递给要在 bsub 中运行的脚本,首先在命令行中而不是在脚本文件。然后运行脚本文件,使用
"sh script.sh [arg]"
Run Code Online (Sandbox Code Playgroud)
在所有 bsub 参数之后。因此整行看起来像这样:
bsub -q [queue] -J "[name]" -W 00:10 [other bsub args] "sh script.sh [script args]"
Run Code Online (Sandbox Code Playgroud)
在这种情况下,最好不要对脚本使用 .bsub 文件,而是使用普通的 .sh 脚本,并使用 Unix sh 命令带参数运行它。