我实际上已经运行了脚本,但我认为它不是很有效,让它运行的唯一方法是将其作为“sourcechange-java.sh”运行有没有办法让它不必输出到首先文件(我已经尝试了所有我可以用谷歌搜索到的关于将变量添加到数组的方法,唯一有效的方法是先访问文件)。
#!/bin/sh
/usr/libexec/java_home -V 2>&1 | grep 86 | awk -F ":" '{print $1}' > java
# pattern="([0-9] [0-9])"
sed -i -e 's/[ \t]*//' java
IFS=$'\n' read -d '' -r -a newJava < java
rm java
OIFS="$IFS"
IFS=([0-9] [0-9])
newJAVA=""
while [[ $newJAVA = "" ]]; do
echo "Select your Java version for this instance"
select newJAVA in ${newJava[@]}; do
if [[ $newJAVA = "" ]]; then
echo "Please enter a valid option. Retry."
else {
export JAVA_HOME=`/usr/libexec/java_home -v $newJAVA`
echo $JAVA_HOME
echo `java -version`
}
fi
break
done
done
IFS="$OIFS"
# exit 0
我打算将其放入 .bash_profile (mac) 中,但我想在创建文件之前将其删除。有没有办法让改变永久化?我想我想提供仅用于此外壳或永久的选项。
答案1
是的,您可以将前 4 行代码替换为:
read -a newJava <<<$(/usr/libexec/java_home -V 2>&1 | grep x86 | awk -F ":" '{print $1}' | xargs echo -n)
答案2
这可能会做你想要的:sudo update-alternatives --config java