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

被折叠的 条评论
为什么被折叠?



