当前位置:   article > 正文

Linux5:Shell编程——流程控制

Linux5:Shell编程——流程控制

目录

前言

一、if-else

二、for循环

三、while语句、无限循环和until循环

1.while语句

2.无限循环

3.until循环

四、case ... esac

五、跳出循环

1.break

2.continue循环

总结


前言

        Shell流程控制包括:if-else语句、for循环、while语句、无限循环、until循环、case ... esac和跳出循环。

 

一、if-else

  • if结构的几种写法
  1. # if 控制语句
  2. # if判断
  3. # if command;
  4. # then
  5. # code
  6. # fi
  7. # if else 语句
  8. # if command;
  9. # then
  10. # code
  11. # else
  12. # code
  13. # fi
  14. # if elif else 语句
  15. # if command;
  16. # then
  17. # code
  18. # elif command2;
  19. # then
  20. # code
  21. # *n
  22. # else
  23. # code
  24. # fi
  • 举例
  1. #!/bin/sh
  2. if [ `ps -ef | grep -c "ssh"` -gt 1 ]; # ps -ef 列出当前系统中所有的进程信息。
  3. # grep -c "ssh" 统计这些进程信息中包含字符串 "ssh" 的行数。
  4. then
  5. echo "True"
  6. fi
  7. echo "-----------------"
  8. if ((10>29));
  9. then
  10. echo "10 bigger then 20"
  11. else
  12. echo "10 less then 20"
  13. fi
  14. echo "------------------"
  15. # elif
  16. a=10
  17. b=20
  18. if [ $a -eq $b ];
  19. then
  20. echo "a=b"
  21. elif [ $a -gt $b ];
  22. then
  23. echo "a>b"
  24. else [ $a -lt $b ];
  25. echo "a<b"
  26. fi
  • 输出
  1. True
  2. -----------------
  3. 10 less then 20
  4. ------------------
  5. a<b

 

二、for循环

  • 结构
  1. # for循环
  2. # for i in xxx;
  3. # do
  4. # code
  5. # done
  • 举例
  1. #!/bin/sh
  2. for i in "I\'m good at coding";
  3. do
  4. echo $i
  5. done
  6. for i in 1 2 3 4 5 ;
  7. do
  8. echo the value is $i
  9. done
  10. for i in "$@"; # 文件传参 $@ 循环获取传入的参数
  11. do
  12. echo $i
  13. done
  • 输出
  1. [root@tokyo001 shell_code]# sh demo10.sh 2 3 4 5 5 # 文件传参写法
  2. I\'m good at coding
  3. the value is 1
  4. the value is 2
  5. the value is 3
  6. the value is 4
  7. the value is 5
  8. 2
  9. 3
  10. 4
  11. 5
  12. 5

 

三、while语句、无限循环和until循环

1.while语句

  • 结构
  1. # while循环
  2. # while codition
  3. # do
  4. # code
  5. # done
  • 举例:注意这里出现了shell编程里的自增语句 let "n++"
  1. #!/bin/sh
  2. a=1
  3. while [ $a -le 5 ]
  4. do
  5. echo $a
  6. let "a++" # 等价于 a=`expr $a + 1 `
  7. done
  • 输出
  1. 1
  2. 2
  3. 3
  4. 4
  5. 5

 

2.无限循环

  • 结构
  1. #无限循环语法格式
  2. # while : # 或者 while True
  3. # do
  4. # echo "im handsome"
  5. # done
  6. # for ((;;))
  • 举例
  1. #!/bin/sh
  2. # 死循环
  3. echo "请按ctrl+c结束"
  4. echo -n "请输入你喜欢的电影:" # -n 不要在输出末尾添加换行符
  5. while read film
  6. do
  7. echo "${film}是一部好电影"
  8. done
  • 输出:程序无限循环 按ctrl + c可退出
  1. 请按ctrl+c结束
  2. 请输入你喜欢的电影:hhh
  3. hhh是一部好电影
  4. xxxx
  5. xxxx是一部好电影
  6. gggg
  7. gggg是一部好电影

 

3.until循环

  • 举例
  1. #!/bin/sh
  2. # until循环 直到条件为真为止
  3. a=0
  4. until [ ! $a -lt 10 ]
  5. do
  6. echo $a
  7. let "a++"
  8. done
  • 输出
  1. 0
  2. 1
  3. 2
  4. 3
  5. 4
  6. 5
  7. 6
  8. 7
  9. 8
  10. 9

 

四、case ... esac

  • 举例
  1. #!/bin/sh
  2. # case esac 模式匹配
  3. echo "请输入1-4之间的数字"
  4. read -p "请输入数字:" num
  5. case $num in
  6. 1)
  7. echo "you choose 1"
  8. ;; # 表示匹配结束
  9. 2)
  10. echo "you choose 2"
  11. ;;
  12. 3)
  13. echo "you choose 3"
  14. ;;
  15. 4)
  16. echo "you choose 4"
  17. ;;
  18. *) # 8 通配其他结果
  19. echo "you choose others"
  20. ;;
  21. esac
  22. echo "----------------"
  23. a="hhh"
  24. case $a in
  25. "hhh")
  26. echo "you are hhhhhhhhh"
  27. ;;
  28. "xxx")
  29. echo "you are xxxxxxxxx"
  30. ;;
  31. "ggg")
  32. echo "you are gggggggggg"
  33. ;;
  34. esac
  • 输出:一种是获取用户输入的数据进行判断,一种是直接判断
  1. 请输入1-4之间的数字
  2. 请输入数字:2
  3. you choose 2
  4. ----------------
  5. you are hhhhhhhhh

 

五、跳出循环

1.break

  • break 命令允许跳出所有循环(终止执行后面的所有循环)
  • 举例
  1. #!/bin/sh
  2. # break 跳出循环
  3. echo "welcome to paris"
  4. echo "plese tell me yuor age"
  5. while :
  6. do
  7. read -p "plese tell me yuor age of ten " age
  8. case $age in
  9. 1|2|3|4)
  10. echo "your are so yong"
  11. ;;
  12. *)
  13. echo "old man"
  14. break # 跳出整个循环
  15. ;;
  16. esac
  17. done
  • 输出
  1. welcome to paris
  2. plese tell me yuor age
  3. plese tell me yuor age of ten 1
  4. your are so yong
  5. plese tell me yuor age of ten 1
  6. your are so yong
  7. plese tell me yuor age of ten 1
  8. your are so yong
  9. plese tell me yuor age of ten 5
  10. old man

 

2.continue循环

  • continue 命令,仅跳出当前循环
  • 举例
  1. #!/bin/sh
  2. # continue 跳出循环
  3. echo "welcome to paris"
  4. echo "plese tell me yuor age"
  5. while :
  6. do
  7. read -p "plese tell me yuor age of ten " age
  8. case $age in
  9. 1|2|3|4)
  10. echo "your are so yong"
  11. ;;
  12. *)
  13. echo "old man"
  14. continue # 跳出当前循环
  15. ;;
  16. esac
  17. done
  • 输出:用户输入1,2,3,4以外的数字仍不会跳出整个循环,只跳出了这一次的循环
  1. welcome to paris
  2. plese tell me yuor age
  3. plese tell me yuor age of ten 1
  4. your are so yong
  5. plese tell me yuor age of ten 2
  6. your are so yong
  7. plese tell me yuor age of ten 3
  8. your are so yong
  9. plese tell me yuor age of ten 1
  10. your are so yong
  11. plese tell me yuor age of ten 6
  12. old man
  13. plese tell me yuor age of ten 6
  14. old man
  15. plese tell me yuor age of ten

 

总结

        Shell流程控制包括:if-else语句、for循环、while语句、无限循环、until循环、case ... esac和跳出循环。

        Shell流程控制包括:if-else语句、for循环、while语句、无限循环、until循环、case ... esac和跳出循环。

        重要的事情说三遍哈哈哈哈。

本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号