2014-11-24 179 views
0

我试过通过命令行参数将shell变量传递给shell脚本。如何将shell变量作为命令行参数传递给shell脚本

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

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

和m试图运行此为:

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

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

相反,我要像

运行DD 50 ./StatCollection_DBServer.sh

和脚本变量应该从这里只有和将要创建将作为“DD_50users目录中获得的价值”。

如何做到这一点的任何帮助?

在此先感谢。

+0

你不能以你想要的方式去做。 Bash不会那样工作。 Bash会查看第一个单词“DD”,并认为这是命令,之后的每个单词都是DD的参数。你需要遵循Ansurul的建议,或者做一些有趣的事情,比如让DD你的shell脚本。 – Bitdiot 2014-11-24 12:57:01

回答

1

Bash脚本带参数的脚本调用后没有以前那么你需要调用的脚本是这样的:

./StatCollection_DBServer.sh DD 50 

在脚本中,你可以访问的变量为$ 1和$ 2这样的脚本可以是这样的:

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

我希望这有助于...

+0

谢谢@Thawn,你的建议奏效。 – user3627319 2014-11-24 10:27:38

+1

如果这是您的问题的正确答案,请接受它。谢谢! – Thawn 2014-11-24 14:59:22

+0

是@ Thawn,实施你的建议。现在它工作正常。谢谢。 :-) – user3627319 2014-11-26 07:25:34

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

,并把它升IKE在此:

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

我试过上面的代码,它工作得很好 – Hasan 2014-11-24 10:00:19

+0

谢谢@ user2618277。你的建议奏效了。 – user3627319 2014-11-24 10:26:43

2

简单的调用它是这样的:sh script.sh DD 50

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

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

这里$1将包含第一个参数,$2将包含第二论据。

相关问题