2017-03-24 1 views
1

Ich schreibe ein Shell-Skript, das eine Umgebungsvariable verwendet.

Die Umgebungsvariable hat $ 1 im Wert festgelegt. Wenn ich die Variable env im Skript verwende, muss ich $ 1 als Parameter verwenden, der von den Skriptargumenten übergeben wird.

Beispiel:

export EXPORT_VAR="-DmyVariable=\$1" 

In einem Shell-Skript (myScript.sh), habe ich den oben env Variable wie unten verwendet.

#!/bin/bash 

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

ich das Skript leite wie folgt:

./myScript.sh var1 var2 

Ich möchte den folgenden Befehl

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

Bitte geben Sie ausgeführt werden.


$ 1 ist nur ein Beispiel. Die Umgebungsvariable kann $ 2 .... $ N haben. Die gleiche Variable sollten Sie Ihren Skript schreiben können, während der Ausführung

Antwort

0

zu -DmyVariable zugeordnet werden:

#!/bin/bash 

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

Die Variable $ 1 ist nicht festgelegt. Es gibt viele Fälle, wo es $ 2 oder $ 3 sein könnte. –

2

würde ich Refactoring Ihr Skript vorschlagen, so dass Sie in den Variablen als Option passieren können.

#!/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]" 

Vielleicht möchten Sie das Skript ändern, damit es die -e Option erfordert oder legt einen vernünftigen Standardwert. Dies ist nur eine Idee, wie Sie das Problem umgestalten können.