shell脚本下的循环语句for、while、until

约定不等于承诺〃 2022-06-18 04:16 426阅读 0赞

在shell 脚本下的for循环语句
第一种格式:

  1. for curvar in list
  2. do
  3. statements
  4. done

对于list中的每一个值都要执行一次statments时应利用这种格式,对每次循环都是把list中的当前值赋值给变量curvar,list可以是含有几个项的变量也可以是用空格分隔的值表。
实例1:打印1~6

  1. [admin@localhost Linux]$ vim 1.bat
  2. [admin@localhost Linux]$ cat 1.bat
  3. for i in 1 2 3 4 5 6
  4. do
  5. echo $i
  6. done
  7. [admin@localhost Linux]$ bash 1.bat
  8. 1
  9. 2
  10. 3
  11. 4
  12. 5
  13. 6

实例2:当然在这种格式下我们对在命令行给出的实参的字符串循环打印出来

  1. [admin@localhost Linux]$ vim 2.bat
  2. [admin@localhost Linux]$ cat 2.bat
  3. for thing in "$@"
  4. do
  5. echo you typed ${ thing}.
  6. done
  7. [admin@localhost Linux]$ bash 2.bat sdfgg lll jjj
  8. you typed sdfgg.
  9. you typed lll.
  10. you typed jjj.

实例3:也可以将目录下的文件都打印出来
为basename指定一个路径,basename命令会删掉所有的前缀包括最后一个slash(‘/’)字符,然后将字符串显示出来

  1. [admin@localhost 3_29_SC]$ vim 3.bat
  2. [admin@localhost 3_29_SC]$ cat 3.bat
  3. #display dir ->file
  4. for x in /admin/Linux/3_29_SC/*
  5. do
  6. echo $(basename $x) is file in /admin/Linux
  7. done
  8. [admin@localhost 3_29_SC]$ bash 3.bat
  9. 1.bat 1.c 2.bat 2.c 3.bat is file in /admin/Linux

第二种:采用C语言for循环的方式打印1~10

  1. [admin@localhost 3_29_SC]$ vim 4.bat
  2. [admin@localhost 3_29_SC]$ cat 4.bat
  3. #display 1~10
  4. for((i=1;i<=10;i++))
  5. do
  6. echo $i
  7. done
  8. [admin@localhost 3_29_SC]$ bash 4.bat
  9. 1
  10. 2
  11. 3
  12. 4
  13. 5
  14. 6
  15. 7
  16. 8
  17. 9
  18. 10

实例2:打印1~10并且对1~10求和

  1. [admin@localhost 3_29_SC]$ vim 5.bat
  2. [admin@localhost 3_29_SC]$ cat 5.bat
  3. #diplay 1~10and sum
  4. for((i=1;i<=10;i++))
  5. do
  6. echo $i
  7. let "sum=sum+i"
  8. done
  9. echo $sum
  10. [admin@localhost 3_29_SC]$ bash 5.bat
  11. 1
  12. 2
  13. 3
  14. 4
  15. 5
  16. 6
  17. 7
  18. 8
  19. 9
  20. 10
  21. 55

while循环
while语句用来当指定的条件为真时进行一系列的命令,一旦条件判断为假,循环就立即终止。如果所指定条件一开始就为假,则不会执行循环
Linux下
-eq 等于
-ne 不等于
-gt 大于
-ge 大于等于
-lt 小于
-le 小于等于

实例1:利用while循环打印1~10

  1. [admin@localhost 3_29_SC]$ vim 6.bat
  2. [admin@localhost 3_29_SC]$ cat 6.bat
  3. #use while to display 1~10
  4. i=1
  5. while [ $i -lt 11 ]
  6. do
  7. echo $i
  8. let "++i"
  9. done
  10. [admin@localhost 3_29_SC]$ bash 6.bat
  11. 1
  12. 2
  13. 3
  14. 4
  15. 5
  16. 6
  17. 7
  18. 8
  19. 9
  20. 10

关于until 语句
until语句是和while语句的判断相反,条件为假时才进入循环

  1. [admin@localhost 3_29_SC]$ vim 8.bat
  2. [admin@localhost 3_29_SC]$ cat 8.bat
  3. #until
  4. i=1
  5. until [ $i -gt 10 ]
  6. do
  7. echo $i
  8. let "++i"
  9. done
  10. [admin@localhost 3_29_SC]$ bash 8.bat
  11. 1
  12. 2
  13. 3
  14. 4
  15. 5
  16. 6
  17. 7
  18. 8
  19. 9
  20. 10

发表评论

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

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

相关阅读