如何将参数从QSub传递到Bash脚本?

use*_*589 11 parameter-passing qsub

我在使用QSub将变量传递给Bash脚本时遇到问题.

假设我有一个名为example的Bash脚本.示例的格式如下:

#!/bin/bash
# (assume other variables have been set)

echo $1 $2 $3 $4
Run Code Online (Sandbox Code Playgroud)

因此,在终端上执行"bash example.sh这是一个测试"(我正在使用Ubuntu 12.04.3 LTS,如果这有帮助)产生输出"这是一个测试".

但是,当我输入"qsub -v this,is,a,test example.sh"时,我没有输出.我检查了QSub生成的输出文件,但是"这是一个测试"这一行无处可寻.

任何帮助,将不胜感激.

谢谢.

Sco*_*nte 19

使用PBSPro或SGE,可以简单地在脚本名称之后放置参数,这看似直观.

qsub example.sh hello world

在Torque中,可以使用该-F选项提交命令行参数.你的example.sh遗嘱看起来像这样:

#!/bin/bash echo "$1 $2"

和你的命令如下:

qsub -F "hello world" example.sh

或者,可以使用-v逗号分隔的变量列表来设置环境变量.

#!/bin/bash echo "$FOO $BAR"

和你的命令如下:

qsub -v FOO="hello",BAR="world" example.sh

(这可能更好地表达为对@William Hay的答案的评论,但我没有这样做的声誉.)


Wil*_*Hay 6

不确定您正在使用哪个批处理调度程序,但在PBSPro或SGE上然后提交qsub example.sh this is a test应该做你想要的.

Torque批处理调度程序不允许(AFAIK)允许以这种方式将命令行参数传递给脚本.您需要创建一个类似于此的脚本.

#!/bin/bash

echo $FOO
Run Code Online (Sandbox Code Playgroud)

然后使用以下命令提交它:

qsub -v FOO="This is a test" example.sh
Run Code Online (Sandbox Code Playgroud)