if语句
●单分支结构
if 条件测试操作
then 命令序列
fi
if 条件测试操作;then
命令序列
fi
●双分支结构
if 条件测试操作;then
命令序列1
else 命令序列2
fi
●多分支结构
if 条件测试操作1;then
命令序列1
elif 条件测试操作2;then
命令序列2
else
命令序列3
fi
应用案例
需求:判断当前主机是否和远程主机是否ping通
#!/bin/bash
# 该脚本用于判断当前主机是否和远程指定主机互通
read -p "请输入你要ping的主机的IP:" ip
# 使用ping程序判断主机是否互通
ping -c1 $ip &>/dev/null
if [ $? -eq 0 ];then
echo "当前主机和远程主机$ip是互通的"
else
echo "当前主机和远程主机$ip不通的"
fi
逻辑运算符
test $? -eq 0 && echo "当前主机和远程主机$ip是互通的" || echo "当前主机和远程主机$ip不通的"
case语句结构
case 变量值 in
模式1)
命令序列1
;;
模式2)
命令序列2
;;
……
*)
默认命令序列
esac
模式可以是一个数字、一个字符串,甚至是一个简单的正则表达式。
if else一般匹配区间范围,而case一般匹配某个值
作用场景而言,case作用于模式清单,可以写服务启动脚本
echo $RANDOM 输出随机数
echo [ [ [RANDOM%10] 输出除以10的余数
echo [ [ [RANDOM%10+1] 输出除以10的余数再加1
$[ ] :中括号中间写的是算术表达式
${ } : 把变量内容输出,使后面内容不影响变量
应用案例
需求:判断你输入的字符是数字、字母还是其他字符。
[root@server2 ~]# vi case.sh
[root@server2 ~]# chmod +x case.sh
[root@server2 ~]# ./case.sh
#!/bin/bash
# 判断输入的字符是哪种类型
read -p "请输入一个字符并按enter回车确认" key
case "$key" in
[a-z]|[A-Z]) 匹配任意字母
echo "您输入的是字母."
;;
[0-9]) 匹配任意数字
echo "您输入的是数字."
;;
*) 匹配任意字符
echo "您输入的是空格,功能键,其它控制字符."
exit 1
esac