通过bsub提交时包括bash脚本参数

bru*_*lin 5 bash shell batch-processing

我有以下shell脚本。

#!/bin/bash --login

#BSUB -q q_ab_mpc_work
#BSUB -J psipred
#BSUB -W 01:00
#BSUB -n 64
#BSUB -o psipred.out
#BSUB -e psipred.err
module load compiler/gnu-4.8.0
module load R/3.0.1
export OMP_NUM_THREADS=4

code=${HOME}/Phd/script_dev/rfpipeline.sh
MYPATH=$HOME/Phd/script_dev/
cd ${MYPATH}
${code} myfile.txt
Run Code Online (Sandbox Code Playgroud)

我可以使用bsub将程序提交到集群:

bsub < myprogram.sh
Run Code Online (Sandbox Code Playgroud)

但是我将程序的最后一行更改为:

${code} $1
Run Code Online (Sandbox Code Playgroud)

在使用命令行参数指定文件的位置,如何将其传递给bsub?

我试过了:

bsub < myprogram.sh myfile.text
Run Code Online (Sandbox Code Playgroud)

但是bsub将不接受myfile.text作为bash参数。

我也尝试过

bsub <<< myprogram.sh myfile.text
./myprogram.sh myfile.text | bsub
bsub "sh ./myprogram.sh myfile.text"
Run Code Online (Sandbox Code Playgroud)

我需要做什么?

bru*_*lin 3

我可以回答我自己的问题吗?

看来我可以使用 sed 动态修改文件。我的原始文件现在是:

#!/bin/bash --login

#BSUB -q q_ab_mpc_work
#BSUB -J psipred
#BSUB -W 01:00
#BSUB -n 64
#BSUB -o psipred.out
#BSUB -e psipred.err
module load compiler/gnu-4.8.0
module load R/3.0.1
export OMP_NUM_THREADS=4

code=${HOME}/Phd/script_dev/rfpipeline.sh
MYPATH=$HOME/Phd/script_dev/
cd ${MYPATH}
${code} myfile
Run Code Online (Sandbox Code Playgroud)

我编写了一个 bash 脚本,使用命令行参数sender.sh修改变量,并将修改后的文件发送到 bsub:myfile

#!/bin/bash
sed "s/myfile/$1/g" < myprogram.sh | bsub
Run Code Online (Sandbox Code Playgroud)

小心使用双引号,这样 bash 就不会按$字面意思读取。然后我只需运行即可./sender.sh jobfile.txt

希望这对任何人都有帮助。