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

Bash 需要在shell脚本中将$1值更改为$1变量,bash,shell,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

我正在编写一个使用环境变量的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

您可以将脚本编写为:

#!/bin/bash

exec $JAVA_HOME/bin/java -DmyVariable=$1 com.myProject.myJob "$1 $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变量不是固定的。在很多情况下,它可能是2美元或3美元。