shell循环语句

所有的笔记只记录一些例子,根据例子解释一些出现的语法,不介绍具体的语法

2015-07-01 21:58:33 星期三

for循环

  • 用例一
    用for循环在家目录下创建aaa1-aaa10,然后在aaa1-aaa10创建bbb1-bbb10的目录
    1. #!/bin/bash
    2. for k in $(seq 1 10)
    3. do
    4.    mkdir /home/hxy/aaa${k}
    5. cd /home/hxy/aaa${k}   
    6.    for i in $(seq 1 10)
    7. do
    8. mkdir bbb${i}
    9. done
    10. done

    seq 用于产生从某个数到另外一个数之间的所有整数

用例二

  1. #!/bin/bash
  2. DIR="/var"
  3. cd $DIR
  4. for k in $(ls $DIR)
  5. do
  6.    [ -d $k ]&& du -sh $k
  7. done

-d 判断是否为目录

或者

  1. vi getdu.sh
  2. #!/bin/bash
  3. DIR=$1
  4. if [ -d $DIR ];then
  5. cd $DIR
  6.  for k in $(ls $DIR)
  7.  do
  8.     [ -d $k ]&& du -sh $k
  9.  done
  10. else 
  11.   echo $1" is not a directory!!"
  12. fi

使用,加入一个判断

  1. [root@oracle ~]# sh getdu.sh a
  2. a is not a directory!!
  1. [root@oracle ~]# sh getdu.sh /var
  2. 4.0K account
  3. 15M cache
  4. 4.0K crash
  5. 4.0K cvs
  6. 12K db
  7. 8.0K empty
  8. 8.0K ftp
  9. 4.0K games
  10. 4.0K gdm
  11. 64M lib
  12. 4.0K local
  13. 20K lock
  14. 7.3M log
  15. 0 mail
  16. 4.0K nis
  17. 4.0K opt
  18. 4.0K preserve
  19. 284K run
  20. 1.8M spool
  21. 8.0K tmp
  22. 12K yp

while循环

用例一

  1. [root@oracle ~]# cat a.txt
  2. aaa
  3. bbb
  4. ccc
  5. ddd
  6. [root@oracle ~]# cat while.sh
  7. #!/bin/bash
  8. while read line
  9. do
  10. echo ${line}
  11. done < a.txt

输出

  1. [root@oracle ~]# sh while.sh
  2. aaa
  3. bbb
  4. ccc
  5. ddd

用例二

  1. [root@oracle ~]# cat sum.sh
  2. declare -i i=1
  3. declare -i sum=0
  4. while ((i<=10))
  5. do
  6. let sum=sum+i
  7. let ++i
  8. done
  9. echo $sum
  10. [root@oracle ~]# sh sum.sh
  11. 55

declare -i 声明i和sum为整数类型

until循环

  1. [root@oracle ~]# cat sum.sh
  2. declare -i i=1
  3. declare -i sum=0
  4. until ((i>10))
  5. do
  6. let sum=sum+i
  7. let ++i
  8. done
  9. echo $sum
  10. [root@oracle ~]# sh sum.sh
  11. 55

until条件为假才执行





原文地址:https://www.cnblogs.com/haoxiaoyu/p/c01182f802a106d5155aa485800f82c2.html