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

标签 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

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

bsub < myprogram.sh

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

${code} $1

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

我试过:

bsub < myprogram.sh myfile.text

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

我也试过

bsub <<< myprogram.sh myfile.text
./myprogram.sh myfile.text | bsub
bsub "sh ./myprogram.sh myfile.text"

我需要做什么?

最佳答案

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

看来我可以使用 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

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

#!/bin/bash
sed "s/myfile/$1/g" < myprogram.sh | bsub

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

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

关于bash - 通过 bsub 提交时包括 bash 脚本参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31337364/

相关文章:

linux - 基于文件系统中位置的 Shell 提示符

linux - lsof linux 命令使用参数值计算正在运行的实例

c - 如何知道 C 程序是否支持选项

linux - 如何在shell脚本中将字符串转换为时间戳

php - 获取任何网站的内存使用情况的最佳方法是什么

google-api - Google Calendar API 在单个批处理请求中返回 403 Rate Limit Exceeded

java - 如何在 Hibernate 中有效地进行批量更新

java - 在 Tomcat 中运行后台 Java 程序

linux - ldconfig - LD_LIBRARY_PATH 不是已知的库类型

bash - Shell 脚本模板