select – configurationjava bash脚本

我正在编写一个在远程机器上安装java的脚本。 在运行JRE的.bin文件之后,我怎样才能设置选项–config java而不需要用户input任何内容。

例如,当你input“alternatives –config java”时,会提示你select你想要的java版本。 由于我安装java(“/ usr / sbin / alternatives –install / usr / bin / java java /location/of/jdk1.6/bin/java 2”),#“2”选项应该始终是我想要select的Java。

所以,使用ssh命令执行,我怎么能select第二个选项的java替代品,而无需用户select该选项。 我希望它完全自动化。

这是在一个bash脚本。

谢谢


下面是代码(现在正常工作):

#install the jre sshRetValue=`ssh -p "22" -i $HOME/sshids/idrsa-1.old ${1} " /home/geiser/jms_adapter/jre-6u25-linux-i586.bin "`; sshRetValue=`echo $?`; if [ "$sshRetValue" -eq 0 ];then echo "java jre installed successfully"; #set the alternative and stuff if needed ssh -p "22" -i $HOME/sshids/idrsa-1.old ${1} " /usr/sbin/alternatives --install /usr/bin/java java /root/jre1.6.0_25/bin/java 2 "; echo 2 | ssh -p "35903" -i $HOME/sshids/idrsa-1.old ${1} " alternatives --config java "; else echo "java jre installation failed"; fi 

一般来说,你可以喂任何需要标准输入的程序,像这样:

 echo -e "line 1\nline 2\nline 3" | program 

您也可以非交互式地运行alternatives命令。 而不是--config ,使用--set选项来直接指定替代路径。

 sudo alternatives --set java /location/of/jdk1.6/bin/java 

这在Java 8中适用于我:

  alternatives --install /usr/bin/java java /usr/lib/jvm/jre1.8.0_60/bin/java 3 alternatives --config java <<< '3' 

我使用这个脚本来完成它:

 tmp=`mktemp` echo 2 > $tmp alternatives --config java < $tmp rm -f $tmp 

<表示$tmp文件的内容将被传递到alternatives命令的输入。

编辑:你可以简单地使用一个单一的管道,如其他建议:

echo 2 | sudo alternatives --config java