我正在制作一种部署脚本。它是一个非常简单的基于git pull的部署。 我需要它接受两个参数:要部署的应用程序和服务器的类型(登台,测试,生产)。所以我用每个应用程序的函数编写了脚本
./deploy.sh <appname> <server>
-
#deploy.sh
app1(){
echo $2 #Empty
cd /srv/www/app1/$2 #
git pull origin master
}
case $1 in
"app1") app1;;
esac
现在,当我使用以下命令./deploy.sh app1 staging
运行脚本时。
该脚本仅导航到/srv/www/app1
目录,而不是/srv/www/app1/staging
当我回显$ 2时,没有显示任何内容。
我做错了什么?
答案 0 :(得分:2)
问题是当你在$2
中使用app1
时它试图解释传递给app1
的参数是空的,所以你需要将它作为参数传递给{{1} }}。试试这个:
app1
答案 1 :(得分:0)
研究范围。 shell脚本的每个函数都可以传递参数。 app()
函数正在寻找$ 2作为自身的参数。没有args通过,所以$ 2相当于&#34;&#34;。如果你使用下面的脚本,你应该没问题,在案件中将$ 2传递给app1。
#deploy.sh
app1(){
echo $1 #Empty
cd /srv/www/app1/$1 #
git pull origin master
}
case $1 in
"app1") app1 $2 ;;
esac