2017-03-24 106 views
1

我正在編寫一個使用環境變量的shell腳本。

環境變量在值中設置了$ 1。當我在腳本中使用env變量時,我需要使用$ 1作爲從腳本參數傳遞的參數。

實施例:

export EXPORT_VAR="-DmyVariable=\$1" 

在外殼腳本(myScript.sh),我已經使用上述環境變量等的下方。

#!/bin/bash 

exec $JAVA_HOME/bin/java $EXPORT_VAR com.myProject.myJob "[email protected]" 

我運行該腳本如下:

./myScript.sh var1 var2 

我想執行

exec $JAVA_HOME/bin/java -DmyVariable=var1 com.myProject.myJob "var1 var2" 

請告知下面的命令。


$ 1只是一個例子。環境變量可以有$ 2 .... $ N。同樣的變量應該被分配到-DmyVariable同時執行

回答

0

您可以編寫腳本:

#!/bin/bash 

exec $JAVA_HOME/bin/java -DmyVariable=$1 com.myProject.myJob "$1 $2" 
+0

$ 1變量不固定。有很多情況下,它可能是2美元或3美元。 –

2

我建議重構你的腳本,這樣你就可以在變量作爲一個選項傳遞。

#!/bin/bash 
case $1 in 
-e | --export-variable) 
    myvar=$2 
    shift 2 ;; 
esac 
exec $JAVA_HOME/bin/java -DmyVariable="$myvar" com.myProject.myJob "$myvar" "[email protected]" 

您可能需要更改腳本,以便它需要-e選項或指定合理的默認值。這只是爲了讓您瞭解如何重構問題。