需要在shell脚本中将$ 1值更改为$ 1变量

时间:2017-03-24 08:14:12

标签: bash shell

我正在编写一个使用环境变量的shell脚本。

环境变量的值设置为$ 1。当我在脚本中使用env变量时,我需要使用$ 1作为从脚本参数传递的参数。

示例:

export EXPORT_VAR="-DmyVariable=\$1"

在shell脚本(myScript.sh)中,我使用了上面的env变量,如下所示。

#!/bin/bash

exec $JAVA_HOME/bin/java $EXPORT_VAR com.myProject.myJob "$@"

我按如下方式运行脚本:

./myScript.sh var1 var2

我希望执行以下命令

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

请告知。

$ 1只是一个例子。环境变量可以有2美元...... $ N.执行时应将相同的变量分配给-DmyVariable

2 个答案:

答案 0 :(得分: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" "$@"

您可能希望更改脚本,使其需要-e选项或指定合理的默认值。这只是为了让您了解如何重构问题。

答案 1 :(得分:0)

您可以将脚本编写为:

#!/bin/bash

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