2013-10-02 55 views
0

我正在製作一種部署腳本。它是一個非常簡單的基於git pull的部署。 我需要它接受兩個參數:要部署的應用程序和服務器類型(分段,測試,生產)。所以,我有一個函數寫劇本爲每個應用Shell腳本不會更改爲通過參數傳遞的目錄

./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時,不顯示任何內容。 我在做什麼錯?

回答

2

問題是,當你使用$2app1它試圖解釋傳遞給app1裏面是空的論點,所以你需要把它作爲參數傳遞給app1。試試這個:

app1(){ 
     echo $1 #Empty 
     cd /srv/www/app1/$1 # 


     git pull origin master 

} 
case $1 in 
     "app1") app1 $2;; 
esac 
0

查看範圍。每個函數一個shell腳本可以傳遞參數。 app()函數正在尋找$ 2作爲它自己的一個參數。沒有參數通過,所以2美元等於「」。如果你使用下面的腳本,你應該沒問題,將2美元傳遞給app1。

#deploy.sh 
app1(){ 
     echo $1 #Empty 
     cd /srv/www/app1/$1 # 


     git pull origin master 

} 
case $1 in 
    "app1") app1 $2 ;; 
esac 
相關問題