Shell脚本if else fi判断语句应用

记录: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日

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值