25.11.27 shell分支语句

if语句结构分为三种类型:单分支,双分支,多分支

单分支:

if [ 条件表达式 ];then

        命令序列

fi

双分支:

if [ 条件表达式 ];then

        命令序列

else

        命令序列

fi

多分支:

if [ 条件表达式 ];then

        命令序列

elif  [ 条件表达式 ];then

        命令序列

[ else 

        命令序列]

fi

case 引用的变量 in

        变量值1)

                命令序列;;

        变量值2)

                命令序列;;

        变量值n)

                命令序列;;

        *)

                命令序列;

esac

示例:

filename="image.jpg"
case $filename in
    *.jpg|*.jpeg)
        echo "JPEG 图片文件" ;;
    *.png)
        echo "PNG 图片文件" ;;
    *.gif)
        echo "GIF 动图文件" ;;
    *)
        echo "未知文件类型" ;;
esac

1,利用if判断写创建用户(检查用户是否存在)脚本,询问是否创建用户,并设置密码(为空,不同),备份

#!/bin/bash
RED='\033[0;31m'
GREEN='\033[0;32m'
RESET='\033[0m'
read -p "请输入用户名: " user
if [ -z $user ];then
        echo -e "${RED}用户名不能为空!请输入用户名!" && exit
fi

if [ -e /home/$user ];then
        echo -e "${RED}用户已经存在${RESET}" && exit
fi

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

2,利用if判断写修改网卡脚本

#!/bin/bash
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

3,利用if/case分支写一个计算器,选择加减乘除

#!/bin/bash
for ((i;;))
do
        read -p "请输入第一个数字:" a
        read -p "请输入第二个数字:" b
        read -p "请输入你要进行的运算:
        输入1:执行加法
        输入2:执行减法
        输入3:执行乘法
        输入4:执行除法
        输入5:执行取余
        输入6:退出计算器       " c
        case $c in
                1)
                echo $a+$b=`expr $a + $b`
                ;;
                2)
                echo $a-$b=`expr $a - $b`
                ;;
                3)
                echo $a*$b=`expr $a \* $b`
                ;;
                4)
                echo $a÷$b=`expr $a / $b`
                ;;
                5)
                echo $a%$b=`expr $a % $b`
                ;;
                6)
                echo "  *已退出*"
                exit
        esac
done

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值