25.11.26 Shell条件测试

条件测试:test 和 if

条件测试为真=0表示执行成功,条件测试为假执行失败则为其他数字

test $变量1=变量2

-d 测试是否为目录

-e 测试目标文件是否存在

-f 是否为文件

-r 是否可以读取

-w 是否可以写入

-x 是否可以执行

-z 是否为空

[ $变量1 = 变量2 ]

-eq 等于

-gt 大于

-lt 小于

-ge 大于等于

-le 小于等于

-ne 不等于

逻辑运算符

= !=

[ 1 -eq 2 ] && echo $?

输出1

&& 与,上一条命令执行成功后再执行下一条命令

|| 或,上一条命令执行失败后再执行下一条命令

实验1:用test创建目录,文件的脚本,要求创建前文件或目录是否存在,创建时文件名不能为空,选择创建目录还是文件,而不是同时创建

#!/bin/bash
read -p "创建目录请输入1,创建文件请输入2,如要退出请输入3:" input
if [ $input -eq 1 ];then
        read -p "请输入创建的目录名" a
        test -z $a && echo 目录名称不能为空,请重新输入 && exit
        test -e /root/CTMKJB/$a && echo 目录已存在 && exit
        mkdir $a
        echo "已创建目录$a"
        ls
elif [ $input -eq 2 ];then
        read -p "请输入创建的文件名与后缀" b
        test -e /root/CTMKJB/$b && echo 文件已存在 && exit
        touch $b
        echo "已创建文件$b"
        ls
elif [ $input -eq 3 ];then
        echo "已退出"
        exit
else
        echo "请输入1或2,来创建目录或文件!!如要退出请输入3"
        bash mk2.sh
fi

2,创建用户,设置密码,选择是否创建用户,测试用户是否存在,测试密码是否为空,两次密码相同,对新创建的用户密码进行备份


#!/bin/bash
RED='\033[0;31m'
GREEN='\033[0;32m'
RESET='\033[0m'
read -p "请输入用户名: " user
[ -e /home/$user ] && echo -e "${RED}用户已经存在${RESET}" && exit
read -s -p "请输入密码: " password
echo
read -s -p "再次输入密码: " password2
[ $password == $password2 ] && echo -e "${GREEN}密码校验成功${RESET}"
echo $password2 > password.txt
[ $password != $password2 ] && echo -e "${RED}密码不一致,请重新输入${RESET}" && exit
read -p "用户名与密码校验成功,是否创建用户 yes|no:" input
if [ $input == "yes" ];then
        useradd $user
        sleep 0.5
        echo "$password2" | passwd $user --stdin
        echo -e  "${GREEN}用户已创建${RESET}"
        sleep 0.5
        echo -e "用户名: $user  密码: $password2" >> usr_backup.txt
        sleep 1
        echo -e "${GREEN}用户信息${RESET}"
        tail -1 /etc/shadow
        echo -e "${GREEN}用户列表${RESET}"
        ls /home
else
        echo "已退出"
fi

3,创建修改网卡脚本,有配置文件询问是否修改,无配置文件询问是否创建

read -p "请输入网卡名称:ens-    " name

if [ -e /etc/sysconfig/network-scripts/ifcfg-ens$name ];then

        read -p " 同名网卡已存在,是否修改配置文件信息 yes | no  :" input

        if [ $input == "yes" ];then
                vim /etc/sysconfig/network-scripts/ifcfg-ens$name
        else
                exit
        fi
else
        read -p "无同名网卡,是否创建一个新的网卡配置文件 yes | no  :" input
        if [ $input == "yes" ];then
                read -p "请输入IP地址:192.168.x.x       " ip
                read -p "请输入网关地址:192.168.x.x     " gateway
                read -p "请输入DNS地址:" dns
                touch /etc/sysconfig/network-scripts/ifcfg-ens$name
                echo "TYPE=Ethernet
                PROXY_METHOD=none
                BROWSER_ONLY=no
                BOOTPROTO=static
                DEFROUTE=yes
                IPV4_FAILURE_FATAL=no
                IPV6INIT=yes
                IPV6_AUTOCONF=yes
                IPV6_FAILURE_FATAL=no
                IPV6_ADDR_GEN_MODE=stable-privacy
                NAME=ens$name
                UUID=99091610-7b81-479e-9b14-26819532bad3
                DEVICE=ens$name
                ONBOOT=yes
                IPADDR=$ip
                PREFTX=24
                GATEWAY=$gateway
                DNS1=$dns
                DNS2=8.8.8.8" > /etc/sysconfig/network-scripts/ifcfg-ens$name
        cat /etc/sysconfig/network-scripts/ifcfg-ens$name
        else
                exit
        fi
fi

4,安装apache脚本,检测是否有安装包,没有安装包退出脚本

if [ -e httpd-2.4.23.tar.gz ];then
        read -p "找到Appach脚本文件,是否开始安装 yes | no  :"  input
        if [ $input == "yes" ];then
                tar -zxvf httpd-2.4.23.tar.gz -C /usr/src/
                cd /usr/src/httpd-2.4.23/
                sleep 0.5
                rpm -ivh /media/Packages/apr-1.4.8-3.el7.x86_64.rpm
                rpm -ivh /media/Packages/apr-devel-1.4.8-3.el7.x86_64.rpm
                rpm -ivh /media/Packages/apr-util-1.5.2-6.el7.x86_64.rpm
                rpm -ivh /media/Packages/expat-devel-2.1.0-8.el7.x86_64.rpm
                rpm -ivh /media/Packages/libdb-devel-5.3.21-19.el7.x86_64.rpm
                rpm -ivh /media/Packages/cyrus-sasl-devel-2.1.26-20.el7_2.x86_64.rpm
                rpm -ivh /media/Packages/openldap-devel-2.4.40-13.el7.x86_64.rpm
                rpm -ivh /media/Packages/apr-util-devel-1.5.2-6.el7.x86_64.rpm
                rpm -ivh /media/Packages/pcre-devel-8.32-15.el7_2.1.x86_64.rpm
                sleep 1
                ./configure  --enable-so  --prefix=/usr/local/httpd  --enable-sockets  --enable-cgi  --enable-charset-lite
                sleep 0.5
                make
                sleep 1
                make install
                sleep 0.5
                /usr/local/httpd/bin/apachectl  start

                rpm -ivh /media/Packages/lynx-2.8.8-0.3.dev15.el7. x86_64.rpm

                lynx 127.0.0.1
                exit
        fi
else
        echo "未找到Appach脚本文件,即将退出脚本"
        exit
fi

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值