2.2.4 其他实践
学习目标
这一节,我们从 条件进阶、单行命令、小结 三个方面来学习。
条件进阶
简介
if条件控制语句支持(())来代替let命令测试表达式的执行效果,支持[[]]实现正则级别的内容匹配。
表达式的样式如下:
if (( 表达式 )) 或 [[ 内容匹配 ]]
then
指令
fi
实践1-(()) 计算条件匹配
查看脚本内容
[root@localhost ~]# cat odd_even_if.sh
#!/bin/bash
# (()) 在if分支中的应用
# 接收一个数字
read -p "请输入一个数字: " num
# 定制数字奇数和偶数判断
if (( ${num} % 2 == 0 ))
then
echo -e "\e[31m ${num} 是一个偶数\e[0m"
else
echo -e "\e[31m ${num} 是一个奇数\e[0m"
fi
脚本执行效果
[root@localhost ~]# /bin/bash odd_even_if.sh
请输入一个数字: 2
2 是一个偶数
[root@localhost ~]# /bin/bash odd_even_if.sh
请输入一个数字: 1
1 是一个奇数
实践2-[[]]扩展匹配条件
查看脚本内容
[root@localhost ~]# cat condition_extend_if.sh
#!/bin/bash
# [[]] 在if分支中的应用
# 接收一个数字
read -p "请输入一个单词: " string
# 判断内容是否是我们想要的
if [[ ${string} == v* ]]
then
echo -e "\e[31m ${num} 是满足条件的单词\e[0m"
else
echo -e "\e[31m ${num} 不满足条件\e[0m"
fi
执行脚本效果
[root@localhost ~]# /bin/bash condition_extend_if.sh
请输入一个单词: very
是满足条件的单词
[root@localhost ~]# /bin/bash condition_extend_if.sh
请输入一个单词: hello
不满足条件
实践3-[[]]扩展实践
#!/bin/bash
# [[]] 在if分支中的应用
# 接收一个数字
read -p "请输入你的身高(m为单位): " height
# 身高判断逻辑
if [[ ! ${height} =~ ^[0-2](\.[0-9]{,2})?$ ]]
then
echo -e "\e[31m你确定自己的身高是 ${height} ?\e[0m"
else
echo -e "\e[31m我说嘛,${height} 才是你的身高!\e[0m"
fi
脚本执行效果
[root@localhost ~]# /bin/bash person_height_if.sh
请输入你的身高(m为单位): 3
你确定自己的身高是 3 ?
[root@localhost ~]# /bin/bash person_height_if.sh
请输入你的身高(m为单位): 1.2
我说嘛,1.2 才是你的身高!
单行命令
简介
所谓的单行命令,其实指的是对于简单的if条件判断,我们可以直接一行显示,减少代码的行数
简单实践
示例1-命令行的if语句
[root@localhost ~]# num1=3 num2=1
[root@localhost ~]# if [ $num1 -gt $num2 ]; then echo "$num1 数字大"; else echo "$num2 数字大"; fi
3 数字大
[root@localhost ~]# num1=3 num2=9
[root@localhost ~]# if [ $num1 -gt $num2 ]; then echo "$num1 数字大"; else echo "$num2 数字大"; fi
9 数字大
示例2-使用逻辑表达式来满足if效果
[root@localhost ~]# num1=3 num2=1
[root@localhost ~]# [ $num1 -gt $num2 ] && echo "$num1 数字大" || echo "$num2 数字大"
3 数字大
[root@localhost ~]# num1=3 num2=9
[root@localhost ~]# [ $num1 -gt $num2 ] && echo "$num1 数字大" || echo "$num2 数字大"
9 数字大