shell中的for循环语句

一:for语法

(1)语法一

for var in value1 value2 ......
       do 
                  commands
done

 例1:直接赋值,循环输出1-9数字

for i in 1 2 3 4 5 6 7 8 9
        do 
                echo $i
done

 例2:命令赋值,循环输出1-9数字

for i in `seq 1 9`            #seq是一个数数命令,seq 1 9代表从1开始数到9
     do 
          echo $i
done

 例3:赋值是一个字符串

for i in it\'s cool it\'s beautiful      #需要转义
    do 
           echo "word: $i"
done

 (2)语法二

C式的for命令

for ((i=1;i<10;i++))
    do
            echo $i
            sleep 1             #每秒一次
done

for循环使用多个变量

for ((a=0,b=10;a<10,b>0;a++,b--))
     do 
          echo -e "$a\t$b"
done

 无限循环\死循环

for ((;;))
   do 
          echo "hahahaha"
done

 二:循环控制语句

(1)sleep N 脚本执行到改步休眠N秒
例:倒计时计数器

echo -n "倒计时  :"
for i in `seq 9 -1 1`
     do 
              echo -n -e "\b$i"
              sleep 1
done 
echo 

 例:监控主机存活的脚本

for ((;;))
     do
          ping -c1 $1 &>/dev/null            #ping -c<完成次数>设置完成要求回应的次数;$1传递一个参数;&>/dev/null不输出结果
          if [ $? -eq 0 ]
               then
                    echo -e "`date +"%F %H:%M:%S:"`:$1 is \033[32m UP \033[0m"    #设置时间,UP的颜色
               else
                    echo -e "`date +"%F %H:%M:%S:"`:$1 is \033[32m down \033[0m"    
          fi
          sleep 5                                         #脚本节奏控制,生产环境建议1分钟以及以上
done

shell中的for循环语句

 

 

(2)continue跳出循环(跳出本次循环)

例:要求输出12346789

for ((i=1;i<10;i++))
    do
          if [ $i -eq 5 ];then      
               #本次循环到此结束,可以开始下一次循环
                continue
          fi        
        echo $i
done

结果:

[root@localhost shell]# bash test8.sh 192.168.10.30
1
2
3
4
6
7
8
9

(3)break跳出循环(后续循环也跳出)
例1:要求用户输入一个字母,当输入M的时候退出

for ((;;))
     do 
            read -p "char:  " ch
            if [ $ch == 'M' ]
                    then 
                    #终止本次循环
                           break
            else
                    echo "你输入的字符是:$ch"
            fi
done

例2:内外循环

for((i=1;i<100;i++))
      do
           echo "#loop $i"
           for ((;;))
                  do
                      echo "haha"
                      break                #如果改成break 2,则执行一次直接跳出整个循环【内循环为1,外为2】
           done
           sleep 3
done
       

上一篇:Objective-c 数组对象


下一篇:TCP三次握手和四次挥手