我试图通过将版本传递给函数来设置我的Java版本。但是,我不确定如何在命令中替换bash参数。 以下是我正在使用的功能
function setTheJavaVersion(){
export JAVA_HOME=`/usr/libexec/java_home -v '$1*'`
}
我将函数称为 -
setTheJavaVersion 1.7
1.7存储在" $ 1"但正如预期的那样,我收到错误消息 -
Unable to find any JVMs matching version "$1*".
不是bash专家,请原谅我这是一个愚蠢的问题。
答案 0 :(得分:3)
你有一些不正确的事情。
function setTheJavaVersion() {
ver=$(/usr/libexec/java_home -v "$1")
export JAVA_HOME=$ver
}
$( ... )
语法。 $1
,您需要使用双引号,因为它不会使用shell扩展和单引号;最后的*
毫无意义。答案 1 :(得分:2)
引用是这里的问题。变化
'$1*'
到
"$1"'*'
允许扩展第一个参数。 shell脚本中的单引号和双引号不同。双引号(")允许变量在表达式中扩展,而单引号则为字面上的$ 1。