2014-11-24 708 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將包含第二論據。

相關問題