我尝试通过命令行参数将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"。
有关如何执行此操作的任何帮助?
提前致谢。
答案 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
在这种情况下,您在调用脚本之前设置环境变量prodName
和users
。这就是您能够在代码中使用这些变量的原因。
答案 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
将包含第二个参数。