我试过通过命令行参数将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”。
有关如何做到这一点的任何帮助?
提前致谢。
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
在这种情况下,您在调用脚本之前设置环境变量prodName
和users
。这就是为什么你能够在代码中使用这些变量的原因。
#!/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
简单地称之为:sh script.sh DD 50
该脚本将读取命令行参数:
prodName=$1
users=$2
LOG_DIRECTORY="${prodName}_${users}users"
mkdir -m 777 "$LOG_DIRECTORY"
这里$1
将包含第一个参数,$2
将包含第二个参数。