脚本安装java环境

在工作中,需要涉及到安装环境变量,如果机器太多就会导致花费大量的时间在配置环境上,如果有一个脚本,只需要把我们需要的安装包放在指定位置等待安装即可就可以减轻工作压力,因此本文意在减轻jdk环境变量的安装问题

注意事项:
1、jdk安装包,默认放在/root目录下面
2、java的安装目录在/usr/local/java/下
3、run.sh和check_jdk.sh 需要放在同一目录下
run.sh

#!/bin/bash

bashrc="/root/.bashrc"
profile="/etc/profile"
jdktarget="/usr/local/java"
jdkpath="/root/jdk*"
jdkfile=`find "${jdkpath%/*}" -name  "jdk*" 2>&1`
jdkcreate=0

# 判断jdk的安装目录是否存在
if [ ! -d "$jdktarget" ]; then
    echo "不存在$jdktarget文件,即将开始创建.."
    mkdir "$jdktarget"
    echo "$jdktarget文件创建完成"
    jdkcreate=1
else
    read  -p "是否覆盖jdk原文件(y/n)" -t 30 condition
    if [ ! -n "$condition" ]; then
        a=1
    elif [[ "$condition" -eq "y" ]] || [[ "$condition" == "Y" ]]; then
        echo "存在jdk文件夹,清空$jdktarget文件并重新创建"
                rm -rf $jdktarget/
                mkdir "$jdktarget"
        jdkcreate=1
    fi
fi

# 判断root文件下是否含有jdk文件夹
if [ ! -d "$jdkpath" ]; then
    existjdk=`find "$jdktarget/" -name "jdk1.8*" 2>&1`
    if [ ! -n "$existjdk" ];then
        echo "开始解压${jdkfile##*/}文件"
                tar -zxf "/root/${jdkfile##*/}" -C $jdktarget
            echo "解压完成"
    else    
        echo "已经安装${existjdk##*/}"
    fi
else    
    echo "不存在jdk文件,强制退出"
    exit 0
fi

#写入java环境变量并立刻生效
if [ $jdkcreate == 1 ]; then
    echo "开始添加jdk环境变量"
    echo "搜所之前的环境"
    length=`cat $profile  | grep -n "JAVA_JDK" | grep -Po "\d+" | xargs -n2 | wc -l 2>&1 `
    #可能存在一行,但是使空的一行
    words=`cat $profile  | grep -n "JAVA_JDK" | grep -Po "\d+" | xargs -n2 | wc -w 2>&1 `
    if [ $words == 0 ];then
        echo "$profile没有搜索到,开始加入新的java环境变量"
        jdkrealpath=`find ${jdktarget%/*} -name "jdk1.8*"`
            echo '#----------JAVA_JDK--------------------' >> $profile
            echo "export JAVA_HOME="$jdkrealpath"" >> $profile
            echo 'export PATH=$JAVA_HOME/bin:$PATH' >> $profile
            echo 'export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar' >> $profile 
        echo '#----------JAVA_JDK--------------------' >> $profile
    else
        echo "$profile存在添加的JAVA环境变量,重新导入"
            for (( i=1; i<=$length; i=i+1));do
                    #获取匹配到配置信息的首行和末尾
                    java_line_a=`cat $profile | grep -n "JAVA_JDK" | grep -Po "\d+" | xargs -n2 | awk 'NR==1{print $1}' 2>&1`
                    java_line_b=`cat $profile | grep -n "JAVA_JDK" | grep -Po "\d+" | xargs -n2 | awk 'NR==1{print $2}' 2>&1`
                    #执行删除操作  带上-i否则不会原地删除
                    sed -i ${java_line_a}","${java_line_b}"d" $profile
            done
        jdkrealpath=`find ${jdktarget%/*} -name "jdk1.8*"`
                echo '#----------JAVA_JDK--------------------' >> $profile
                echo "export JAVA_HOME="$jdkrealpath"" >> $profile
                echo 'export PATH=$JAVA_HOME/bin:$PATH' >> $profile
                echo 'export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar' >> $profile
                echo '#----------JAVA_JDK--------------------' >> $profile
    fi

    echo "$profile环境变量导入成功..."


    length=`cat $profile  | grep -n "JAVA_JDK" | grep -Po "\d+" | xargs -n2 | wc -l 2>&1 `
    #可能存在一行,但是使空的一行
        words=`cat $bashrc  | grep -n "JAVA_JDK" | grep -Po "\d+" | xargs -n2 | wc -w 2>&1`
        if [ $words == 0 ];then
            echo "$bashrc没有搜索到,开始加入新的java环境变量"
                echo '#----------JAVA_JDK--------------------' >> $bashrc
                echo "JAVA_HOME="$jdkrealpath"" >> $bashrc
                echo 'PATH=$PATH:$JAVA_HOME/bin' >> $bashrc
                echo '#----------JAVA_JDK--------------------' >> $bashrc
                echo "$bashrc添加成功..."
        else
                echo "$bashrc存在添加的JAVA环境变量,重新导入"
                for (( i=1; i<=$length; i=i+1));do
                    #获取匹配到配置信息的首行和末尾
                        java_line_a=`cat $bashrc | grep -n "JAVA_JDK" | grep -Po "\d+" | xargs -n2 | awk 'NR==1{print $1}' 2>&1`
                        java_line_b=`cat $bashrc | grep -n "JAVA_JDK" | grep -Po "\d+" | xargs -n2 | awk 'NR==1{print $2}' 2>&1`
                        #执行删除操作  带上-i否则不会原地删除
                        sed -i "${java_line_a},${java_line_b}d" $bashrc
                done
                echo '#----------JAVA_JDK--------------------' >> $bashrc
                echo "JAVA_HOME="$jdkrealpath"" >> $bashrc
                echo 'PATH=$PATH:$JAVA_HOME/bin' >> $bashrc
                echo '#----------JAVA_JDK--------------------' >> $bashrc
        fi

    echo "$bashrc导入新的环境变量成功..."
    

    # 使环境变量生效
    . $profile
    . $bashrc
    
fi

#指定查看java -version版本的脚本,注意不能直接在当前shell脚本查看
jdkresult=`./check_jdk.sh`
if [ $jdkresult == 0 ];then
    exit 2
fi

check_jdk.sh

#!/bin/bash

function jdk()
{
    check_results=`java -version 2>&1`
    if [[ $check_results =~ "1.8." ]];then
            java -version
            echo "jdk安装完成"
            return 1
    else
            echo "jdk安装失败!"
            return  0
    fi
}
echo $(jdk)

run.sh 是帮助我们直接安装的脚本,而check_jdk.sh则是检查java -version是否安装成功。因为想在一个shell脚本中使当前s追加到环境变量中的配置生效,必须使当前shell脚本退出以后才可以生效,因此我采用打开新的一个shell,在里面执行检查操作。

效果:
在这里插入图片描述

原文链接:脚本安装java环境_北漂的阿狸的博客-CSDN博客_脚本安装java

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值