记录:431
场景:Shell脚本if else判断语句应用。一般格式:if then fi、if then else fi、if then elif then else fi、if then elif then elif then else fi。
版本:CentOS Linux release 7.9.2009。
1.if else常用格式
1.1格式一:if then fi
if condition
then
command1
...
commandN
fi
1.2格式二:if then else fi
if condition
then
commandA
else
commandB
fi
1.3格式三:if then elif then else fi
if condition1
then
commandA
elif condition1
then
commandB
else
commandC
fi
2.if else的判断语句(())和[]和[[]]
2.1使用(())判断语句
在判断语句(())中,使用>、<、!=等运算符。
2.2使用test和[]和[[]]判断语句
格式:test expression
格式:[ expression ]
在判断语句test和[...]中,使用-eq、-ne、-gt、lt、-ge、le等运算符。
注意:test命令简写为[],因此,test和[]是等价的。[]和expression之间的空格,这个两个空格是必须的,否则执行时会导致语法错误。
示例:[ expression],执行这条命令时,会报错:[: missing `]'。
3.if then fi语句使用
3.1使用(())、test、[]、[[]]判断语句
3.2脚本
脚本名称:b2023052301.sh
脚本内容:
#!/bin/bash
echo "请分别输入GDP,人口数,以空格分割:"
read gdp population
# 1.使用(())表达式
if (( ${gdp} > 20000 && ${population} < 1500))
then
echo "城市GDP: ${gdp} 亿, 人口: ${population} 万,这是一个大城市."
fi
# 2.使用test表达式
if test ${gdp} -gt 20000 && test ${population} -lt 1500
then
echo "城市GDP: ${gdp} 亿, 人口: ${population} 万,这是一个大城市."
fi
# 3.使用[]表达式
if [ ${gdp} -gt 20000 ] && [ ${population} -lt 1500 ]
then
echo "城市GDP: ${gdp} 亿, 人口: ${population} 万,这是一个大城市."
fi
# 4.使用[]表达式,也可以直接使用[[]]
if [[ ${gdp} -gt 20000 && ${population} -lt 1500 ]]
then
echo "城市GDP: ${gdp} 亿, 人口: ${population} 万,这是一个大城市."
fi
3.3执行与输出
执行命令:bash b2023052301.sh
执行结果:
[root@hadoop211 tutorial]# bash b2023052301.sh
请分别输入GDP,人口数,以空格分割:
21235 1312
城市GDP: 21235 亿, 人口: 1312 万,这是一个大城市.
城市GDP: 21235 亿, 人口: 1312 万,这是一个大城市.
城市GDP: 21235 亿, 人口: 1312 万,这是一个大城市.
城市GDP: 21235 亿, 人口: 1312 万,这是一个大城市.
4.if then else fi语句使用
4.1使用(())、test、[]、[[]]判断语句
4.2脚本
脚本名称:b2023052302.sh
脚本内容:
#!/bin/bash
echo "请分别输入GDP,人口数,以空格分割:"
read gdp population
# 1.使用(())表达式
if (( ${gdp} > 20000 && ${population} < 1500))
then
echo "城市GDP: ${gdp} 亿, 人口: ${population} 万,这是一个大城市."
else
echo "城市GDP: ${gdp} 亿, 人口: ${population} 万."
fi
# 2.使用test表达式
if test ${gdp} -gt 20000 && test ${population} -lt 1500
then
echo "城市GDP: ${gdp} 亿, 人口: ${population} 万,这是一个大城市."
else
echo "城市GDP: ${gdp} 亿, 人口: ${population} 万."
fi
# 3.使用[]表达式
if [ ${gdp} -gt 20000 ] && [ ${population} -lt 1500 ]
then
echo "城市GDP: ${gdp} 亿, 人口: ${population} 万,这是一个大城市."
else
echo "城市GDP: ${gdp} 亿, 人口: ${population} 万."
fi
# 4.使用[]表达式,也可以直接使用[[]]
if [[ ${gdp} -gt 20000 && ${population} -lt 1500 ]]
then
echo "城市GDP: ${gdp} 亿, 人口: ${population} 万,这是一个大城市."
else
echo "城市GDP: ${gdp} 亿, 人口: ${population} 万."
fi
4.3执行与输出
执行命令:bash b2023052302.sh
执行结果:
[root@hadoop211 tutorial]# bash b2023052302.sh
请分别输入GDP,人口数,以空格分割:
21235 1312
城市GDP: 21235 亿, 人口: 1312 万,这是一个大城市.
城市GDP: 21235 亿, 人口: 1312 万,这是一个大城市.
城市GDP: 21235 亿, 人口: 1312 万,这是一个大城市.
城市GDP: 21235 亿, 人口: 1312 万,这是一个大城市.
[root@hadoop211 tutorial]# bash b2023052302.sh
请分别输入GDP,人口数,以空格分割:
11235 1312
城市GDP: 11235 亿, 人口: 1312 万.
城市GDP: 11235 亿, 人口: 1312 万.
城市GDP: 11235 亿, 人口: 1312 万.
城市GDP: 11235 亿, 人口: 1312 万.
5.if then elif then else fi语句使用
5.1使用(())、test、[]、[[]]判断语句
5.2脚本
脚本名称:b2023052303.sh
脚本内容:
#!/bin/bash
echo "请分别输入GDP,人口数,以空格分割:"
read gdp population
# 1.使用(())表达式
if (( ${gdp} > 20000 && ${population} < 1500)) ;then
echo "城市GDP: ${gdp} 亿, 人口: ${population} 万,这是一个大城市."
elif (( ${gdp} > 10000 && ${population} < 800)) ;then
echo "城市GDP: ${gdp} 亿, 人口: ${population} 万,这是一个有竞争力的城市."
else
echo "城市GDP: ${gdp} 亿, 人口: ${population} 万."
fi
# 2.使用test表达式
if test ${gdp} -gt 20000 && test ${population} -lt 1500 ;then
echo "城市GDP: ${gdp} 亿, 人口: ${population} 万,这是一个大城市."
elif test ${gdp} -gt 10000 && test ${population} -lt 800 ;then
echo "城市GDP: ${gdp} 亿, 人口: ${population} 万,这是一个有竞争力的城市."
else
echo "城市GDP: ${gdp} 亿, 人口: ${population} 万."
fi
# 3.使用[]表达式
if [ ${gdp} -gt 20000 ] && [ ${population} -lt 1500 ] ;then
echo "城市GDP: ${gdp} 亿, 人口: ${population} 万,这是一个大城市."
elif [ ${gdp} -gt 10000 ] && [ ${population} -lt 800 ] ;then
echo "城市GDP: ${gdp} 亿, 人口: ${population} 万,这是一个有竞争力的城市."
else
echo "城市GDP: ${gdp} 亿, 人口: ${population} 万."
fi
# 4.使用[]表达式,也可以直接使用[[]]
if [[ ${gdp} -gt 20000 && ${population} -lt 1500 ]] ;then
echo "城市GDP: ${gdp} 亿, 人口: ${population} 万,这是一个大城市."
elif [[ ${gdp} -gt 10000 && ${population} -lt 800 ]] ;then
echo "城市GDP: ${gdp} 亿, 人口: ${population} 万,这是一个有竞争力的城市."
else
echo "城市GDP: ${gdp} 亿, 人口: ${population} 万."
fi
5.3执行与输出
执行命令:bash b2023052303.sh
执行结果:
[root@hadoop211 tutorial]# bash b2023052303.sh
请分别输入GDP,人口数,以空格分割:
21235 1312
城市GDP: 21235 亿, 人口: 1312 万,这是一个大城市.
城市GDP: 21235 亿, 人口: 1312 万,这是一个大城市.
城市GDP: 21235 亿, 人口: 1312 万,这是一个大城市.
城市GDP: 21235 亿, 人口: 1312 万,这是一个大城市.
[root@hadoop211 tutorial]# bash b2023052303.sh
请分别输入GDP,人口数,以空格分割:
11235 789
城市GDP: 11235 亿, 人口: 789 万,这是一个有竞争力的城市.
城市GDP: 11235 亿, 人口: 789 万,这是一个有竞争力的城市.
城市GDP: 11235 亿, 人口: 789 万,这是一个有竞争力的城市.
城市GDP: 11235 亿, 人口: 789 万,这是一个有竞争力的城市.
[root@hadoop211 tutorial]# bash b2023052303.sh
请分别输入GDP,人口数,以空格分割:
21235 1689
城市GDP: 21235 亿, 人口: 1689 万.
城市GDP: 21235 亿, 人口: 1689 万.
城市GDP: 21235 亿, 人口: 1689 万.
城市GDP: 21235 亿, 人口: 1689 万.
6.if then elif then else fi语句使用
6.1使用(())、test、[]判断语句
6.2脚本
脚本名称:b2023052304.sh
脚本内容:
#!/bin/bash
echo "请输入字符串日期(格式:yyyymmdd):"
read day_str
# date命令获取星期索引号,0是星期日,1-6是星期一到星期六
week_index=`date -d ${day_str} +%w`
if (( ${week_index} == 0 )) ;then
echo "日期: ${day_str},是星期日."
elif test ${week_index} == 1 ;then
echo "日期: ${day_str},是星期一."
elif [ ${week_index} == 2 ] ;then
echo "日期: ${day_str},是星期二."
elif [ ${week_index} == 3 ] ;then
echo "日期: ${day_str},是星期三."
elif [ ${week_index} == 4 ] ;then
echo "日期: ${day_str},是星期四."
elif [ ${week_index} == 5 ] ;then
echo "日期: ${day_str},是星期五."
elif [ ${week_index} == 6 ] ;then
echo "日期: ${day_str},是星期六."
else
echo "输入日期不对."
fi
6.3执行与输出
执行命令:bash b2023052304.sh
执行结果:
[root@hadoop211 tutorial]# bash b2023052304.sh
请输入字符串日期(格式:yyyymmdd):
20230521
日期: 20230521,是星期日.
[root@hadoop211 tutorial]# bash b2023052304.sh
请输入字符串日期(格式:yyyymmdd):
20230522
日期: 20230522,是星期一.
[root@hadoop211 tutorial]# bash b2023052304.sh
请输入字符串日期(格式:yyyymmdd):
20230523
日期: 20230523,是星期二.
[root@hadoop211 tutorial]# bash b2023052304.sh
请输入字符串日期(格式:yyyymmdd):
20230524
日期: 20230524,是星期三.
[root@hadoop211 tutorial]# bash b2023052304.sh
请输入字符串日期(格式:yyyymmdd):
20230525
日期: 20230525,是星期四.
[root@hadoop211 tutorial]# bash b2023052304.sh
请输入字符串日期(格式:yyyymmdd):
20230526
日期: 20230526,是星期五.
[root@hadoop211 tutorial]# bash b2023052304.sh
请输入字符串日期(格式:yyyymmdd):
20230527
日期: 20230527,是星期六.
以上,感谢。
2023年5月23日