実際にスクリプトを実行してみましたが、それほど効率的ではないようで実行させる唯一の方法は"sourcechange-java.sh"で実行するだけです。出力する必要がないようにする方法はありますか?最初にファイルに保存します(配列に変数を追加する方法についてGoogleが検索したすべての方法を試しましたが、うまくいく唯一の方法は最初にファイルにアクセスすることでした)。
#!/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