如何将shell变量作为命令行参数传递给shell脚本

时间:2014-11-24 09:41:37

标签: linux bash shell command command-line-arguments

我尝试通过命令行参数将shell变量传递给shell脚本。

下面是在shell脚本中编写的命令。

LOG_DIRECTORY="${prodName}_${users}users"
mkdir -m 777 "${LOG_DIRECTORY}"

并且我试图将其作为:

运行
prodName='DD' users=50 ./StatCollection_DBServer.sh

该命令工作正常,并根据我的要求创建目录。但问题是我不想执行下面提到的shell脚本。

相反,我想像

一样运行它

DD 50 ./StatCollection_DBServer.sh

脚本变量应仅从此处获取值,并且将创建的目录将为" DD_50users"。

有关如何执行此操作的任何帮助?

提前致谢。

3 个答案:

答案 0 :(得分:4)

Bash脚本在调用脚本之后不接受参数,所以你需要像这样调用脚本:

./StatCollection_DBServer.sh DD 50
在脚本中,您可以将变量作为$ 1和$ 2访问,因此脚本可能如下所示:

#!/bin/bash
LOG_DIRECTORY="${1}_${2}users"
mkdir -m 777 "${LOG_DIRECTORY}"

我希望这会有所帮助......

编辑: 只是一个小小的解释,你的方法发生了什么:

prodName='DD' users=50 ./StatCollection_DBServer.sh

在这种情况下,您在调用脚本之前设置环境变量prodNameusers。这就是您能够在代码中使用这些变量的原因。

答案 1 :(得分:2)

#!/bin/sh    
prodName=$1
users=$2
LOG_DIRECTORY="${prodName}_${users}users"
echo $LOG_DIRECTORY
mkdir -m 777 "$LOG_DIRECTORY"

并将其称为:

chmod +x script.sh
./script.sh DD 50

答案 2 :(得分:2)

简单地称之为:sh script.sh DD 50

此脚本将读取命令行参数:

prodName=$1
users=$2
LOG_DIRECTORY="${prodName}_${users}users"
mkdir -m 777 "$LOG_DIRECTORY"

此处$1将包含第一个参数,$2将包含第二个参数。