2017-03-24 58 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选项或指定合理的默认值。这只是为了让您了解如何重构问题。