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

末蓝、 2024-04-23 01:53 207阅读 0赞

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

  1. if condition
  2. then
  3. command1
  4. ...
  5. commandN
  6. fi

1.2格式二:if then else fi

  1. if condition
  2. then
  3. commandA
  4. else
  5. commandB
  6. fi

1.3格式三:if then elif then else fi

  1. if condition1
  2. then
  3. commandA
  4. elif condition1
  5. then
  6. commandB
  7. else
  8. commandC
  9. 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

脚本内容:

  1. #!/bin/bash
  2. echo "请分别输入GDP,人口数,以空格分割:"
  3. read gdp population
  4. # 1.使用(())表达式
  5. if (( ${gdp} > 20000 && ${population} < 1500))
  6. then
  7. echo "城市GDP: ${gdp} 亿, 人口: ${population} 万,这是一个大城市."
  8. fi
  9. # 2.使用test表达式
  10. if test ${gdp} -gt 20000 && test ${population} -lt 1500
  11. then
  12. echo "城市GDP: ${gdp} 亿, 人口: ${population} 万,这是一个大城市."
  13. fi
  14. # 3.使用[]表达式
  15. if [ ${gdp} -gt 20000 ] && [ ${population} -lt 1500 ]
  16. then
  17. echo "城市GDP: ${gdp} 亿, 人口: ${population} 万,这是一个大城市."
  18. fi
  19. # 4.使用[]表达式,也可以直接使用[[]]
  20. if [[ ${gdp} -gt 20000 && ${population} -lt 1500 ]]
  21. then
  22. echo "城市GDP: ${gdp} 亿, 人口: ${population} 万,这是一个大城市."
  23. fi

3.3执行与输出

执行命令:bash b2023052301.sh

执行结果:

  1. [root@hadoop211 tutorial]# bash b2023052301.sh
  2. 请分别输入GDP,人口数,以空格分割:
  3. 21235 1312
  4. 城市GDP: 21235 亿, 人口: 1312 万,这是一个大城市.
  5. 城市GDP: 21235 亿, 人口: 1312 万,这是一个大城市.
  6. 城市GDP: 21235 亿, 人口: 1312 万,这是一个大城市.
  7. 城市GDP: 21235 亿, 人口: 1312 万,这是一个大城市.

4.if then else fi语句使用

4.1使用(())、test、[]、[[]]判断语句

4.2脚本

脚本名称:b2023052302.sh

脚本内容:

  1. #!/bin/bash
  2. echo "请分别输入GDP,人口数,以空格分割:"
  3. read gdp population
  4. # 1.使用(())表达式
  5. if (( ${gdp} > 20000 && ${population} < 1500))
  6. then
  7. echo "城市GDP: ${gdp} 亿, 人口: ${population} 万,这是一个大城市."
  8. else
  9. echo "城市GDP: ${gdp} 亿, 人口: ${population} 万."
  10. fi
  11. # 2.使用test表达式
  12. if test ${gdp} -gt 20000 && test ${population} -lt 1500
  13. then
  14. echo "城市GDP: ${gdp} 亿, 人口: ${population} 万,这是一个大城市."
  15. else
  16. echo "城市GDP: ${gdp} 亿, 人口: ${population} 万."
  17. fi
  18. # 3.使用[]表达式
  19. if [ ${gdp} -gt 20000 ] && [ ${population} -lt 1500 ]
  20. then
  21. echo "城市GDP: ${gdp} 亿, 人口: ${population} 万,这是一个大城市."
  22. else
  23. echo "城市GDP: ${gdp} 亿, 人口: ${population} 万."
  24. fi
  25. # 4.使用[]表达式,也可以直接使用[[]]
  26. if [[ ${gdp} -gt 20000 && ${population} -lt 1500 ]]
  27. then
  28. echo "城市GDP: ${gdp} 亿, 人口: ${population} 万,这是一个大城市."
  29. else
  30. echo "城市GDP: ${gdp} 亿, 人口: ${population} 万."
  31. fi

4.3执行与输出

执行命令:bash b2023052302.sh

执行结果:

  1. [root@hadoop211 tutorial]# bash b2023052302.sh
  2. 请分别输入GDP,人口数,以空格分割:
  3. 21235 1312
  4. 城市GDP: 21235 亿, 人口: 1312 万,这是一个大城市.
  5. 城市GDP: 21235 亿, 人口: 1312 万,这是一个大城市.
  6. 城市GDP: 21235 亿, 人口: 1312 万,这是一个大城市.
  7. 城市GDP: 21235 亿, 人口: 1312 万,这是一个大城市.
  8. [root@hadoop211 tutorial]# bash b2023052302.sh
  9. 请分别输入GDP,人口数,以空格分割:
  10. 11235 1312
  11. 城市GDP: 11235 亿, 人口: 1312 万.
  12. 城市GDP: 11235 亿, 人口: 1312 万.
  13. 城市GDP: 11235 亿, 人口: 1312 万.
  14. 城市GDP: 11235 亿, 人口: 1312 万.

5.if then elif then else fi语句使用

5.1使用(())、test、[]、[[]]判断语句

5.2脚本

脚本名称:b2023052303.sh

脚本内容:

  1. #!/bin/bash
  2. echo "请分别输入GDP,人口数,以空格分割:"
  3. read gdp population
  4. # 1.使用(())表达式
  5. if (( ${gdp} > 20000 && ${population} < 1500)) ;then
  6. echo "城市GDP: ${gdp} 亿, 人口: ${population} 万,这是一个大城市."
  7. elif (( ${gdp} > 10000 && ${population} < 800)) ;then
  8. echo "城市GDP: ${gdp} 亿, 人口: ${population} 万,这是一个有竞争力的城市."
  9. else
  10. echo "城市GDP: ${gdp} 亿, 人口: ${population} 万."
  11. fi
  12. # 2.使用test表达式
  13. if test ${gdp} -gt 20000 && test ${population} -lt 1500 ;then
  14. echo "城市GDP: ${gdp} 亿, 人口: ${population} 万,这是一个大城市."
  15. elif test ${gdp} -gt 10000 && test ${population} -lt 800 ;then
  16. echo "城市GDP: ${gdp} 亿, 人口: ${population} 万,这是一个有竞争力的城市."
  17. else
  18. echo "城市GDP: ${gdp} 亿, 人口: ${population} 万."
  19. fi
  20. # 3.使用[]表达式
  21. if [ ${gdp} -gt 20000 ] && [ ${population} -lt 1500 ] ;then
  22. echo "城市GDP: ${gdp} 亿, 人口: ${population} 万,这是一个大城市."
  23. elif [ ${gdp} -gt 10000 ] && [ ${population} -lt 800 ] ;then
  24. echo "城市GDP: ${gdp} 亿, 人口: ${population} 万,这是一个有竞争力的城市."
  25. else
  26. echo "城市GDP: ${gdp} 亿, 人口: ${population} 万."
  27. fi
  28. # 4.使用[]表达式,也可以直接使用[[]]
  29. if [[ ${gdp} -gt 20000 && ${population} -lt 1500 ]] ;then
  30. echo "城市GDP: ${gdp} 亿, 人口: ${population} 万,这是一个大城市."
  31. elif [[ ${gdp} -gt 10000 && ${population} -lt 800 ]] ;then
  32. echo "城市GDP: ${gdp} 亿, 人口: ${population} 万,这是一个有竞争力的城市."
  33. else
  34. echo "城市GDP: ${gdp} 亿, 人口: ${population} 万."
  35. fi

5.3执行与输出

执行命令:bash b2023052303.sh

执行结果:

  1. [root@hadoop211 tutorial]# bash b2023052303.sh
  2. 请分别输入GDP,人口数,以空格分割:
  3. 21235 1312
  4. 城市GDP: 21235 亿, 人口: 1312 万,这是一个大城市.
  5. 城市GDP: 21235 亿, 人口: 1312 万,这是一个大城市.
  6. 城市GDP: 21235 亿, 人口: 1312 万,这是一个大城市.
  7. 城市GDP: 21235 亿, 人口: 1312 万,这是一个大城市.
  8. [root@hadoop211 tutorial]# bash b2023052303.sh
  9. 请分别输入GDP,人口数,以空格分割:
  10. 11235 789
  11. 城市GDP: 11235 亿, 人口: 789 万,这是一个有竞争力的城市.
  12. 城市GDP: 11235 亿, 人口: 789 万,这是一个有竞争力的城市.
  13. 城市GDP: 11235 亿, 人口: 789 万,这是一个有竞争力的城市.
  14. 城市GDP: 11235 亿, 人口: 789 万,这是一个有竞争力的城市.
  15. [root@hadoop211 tutorial]# bash b2023052303.sh
  16. 请分别输入GDP,人口数,以空格分割:
  17. 21235 1689
  18. 城市GDP: 21235 亿, 人口: 1689 万.
  19. 城市GDP: 21235 亿, 人口: 1689 万.
  20. 城市GDP: 21235 亿, 人口: 1689 万.
  21. 城市GDP: 21235 亿, 人口: 1689 万.

6.if then elif then else fi语句使用

6.1使用(())、test、[]判断语句

6.2脚本

脚本名称:b2023052304.sh

脚本内容:

  1. #!/bin/bash
  2. echo "请输入字符串日期(格式:yyyymmdd):"
  3. read day_str
  4. # date命令获取星期索引号,0是星期日,1-6是星期一到星期六
  5. week_index=`date -d ${day_str} +%w`
  6. if (( ${week_index} == 0 )) ;then
  7. echo "日期: ${day_str},是星期日."
  8. elif test ${week_index} == 1 ;then
  9. echo "日期: ${day_str},是星期一."
  10. elif [ ${week_index} == 2 ] ;then
  11. echo "日期: ${day_str},是星期二."
  12. elif [ ${week_index} == 3 ] ;then
  13. echo "日期: ${day_str},是星期三."
  14. elif [ ${week_index} == 4 ] ;then
  15. echo "日期: ${day_str},是星期四."
  16. elif [ ${week_index} == 5 ] ;then
  17. echo "日期: ${day_str},是星期五."
  18. elif [ ${week_index} == 6 ] ;then
  19. echo "日期: ${day_str},是星期六."
  20. else
  21. echo "输入日期不对."
  22. fi

6.3执行与输出

执行命令:bash b2023052304.sh

执行结果:

  1. [root@hadoop211 tutorial]# bash b2023052304.sh
  2. 请输入字符串日期(格式:yyyymmdd):
  3. 20230521
  4. 日期: 20230521,是星期日.
  5. [root@hadoop211 tutorial]# bash b2023052304.sh
  6. 请输入字符串日期(格式:yyyymmdd):
  7. 20230522
  8. 日期: 20230522,是星期一.
  9. [root@hadoop211 tutorial]# bash b2023052304.sh
  10. 请输入字符串日期(格式:yyyymmdd):
  11. 20230523
  12. 日期: 20230523,是星期二.
  13. [root@hadoop211 tutorial]# bash b2023052304.sh
  14. 请输入字符串日期(格式:yyyymmdd):
  15. 20230524
  16. 日期: 20230524,是星期三.
  17. [root@hadoop211 tutorial]# bash b2023052304.sh
  18. 请输入字符串日期(格式:yyyymmdd):
  19. 20230525
  20. 日期: 20230525,是星期四.
  21. [root@hadoop211 tutorial]# bash b2023052304.sh
  22. 请输入字符串日期(格式:yyyymmdd):
  23. 20230526
  24. 日期: 20230526,是星期五.
  25. [root@hadoop211 tutorial]# bash b2023052304.sh
  26. 请输入字符串日期(格式:yyyymmdd):
  27. 20230527
  28. 日期: 20230527,是星期六.

以上,感谢。

2023年5月23日

发表评论

表情:
评论列表 (有 0 条评论,207人围观)

还没有评论,来说两句吧...

相关阅读

    相关 shell脚本——if语句

    if语句的结构和使用 在简单的Shell脚本程序中,各条语句将按先后顺序依次执行,从而实现批处理的自动化过程。 然而,单一的顺序结构使得脚本过于机械化,不够“智能”,