Shell中的循环

for循环

  • 格式
for 变量名 in 列表
do 
    命令1
    命令2
done
  1. 当变量值在列表里,for循环即执行依次所有命令,使用变量名访问列表中取值。
  2. 命令可为任何有效的shell命令和语句。变量名为任意单词。
  3. in 列表 用法是可选择,如果不用它,for循环使用命令行的位置参数。
  4. in 列表 可以包含替换($)、字符串和文件名

    • demo1
#!/bin/bash

for i in 1 2 3 4 5 
do 
    echo $i
done
  • demo2
#!/bin/bash

for i  in "aaa bbb ccc "#只是一个值,只有一次循环
do
        echo $i
done
echo "你看出来效果不一样了吗"#是三个值的集合。三次循环
for i in aaa bbb ccc
do
        echo $i
done
  • demo3
#!/bin/bash
for loop in `cat myfile`
do 
    echo $i
done

注意 :
* in后为 命令 反引号
* 打印文件内容按照 行+空格 为一行

  • demo4
    如果in后没有语句,此时语句等价于: in $@
#!/bin/bash
#for_noin03.sh
i=1
j=1
k=1
for param
do
        echo "param i #${i} j #${j} k #${k} is $param"
        i=$[ $i + 1 ]//中括号四则运算
        j=$(expr $j + 2)//expr表达式需要用单反引号或者$()四则运算
        k=$((k + 3))//双小括号四则运算
done

while循环

  • 格式
while 命令 (可以是一个命令也可以是多个,做条件测试)
do
      命令1
      命令2
      ...
done

注:在while和do之间虽然通常是一个命令,但可以放几个命令。多个命令之间用分号隔开!命令通常用作测试条件。

#!/bin/bash
#while01
echo "ctrl+d quit"
while echo -n "please enter you name:"; read Name
do
        echo "Yeah, you name: $Name";
done
#!/bin/bash
#while02
while read LINE
do
        echo $LINE
done < names.txt

注意:如果从文件中读入变量,要放到done后

until循环

  • 格式
until 条件
do  
    命令1
    命令2
done

条件可以为任意测试条件,测试发生在循环末尾,因此循环至少执行一次。

#!/bin/sh
#until_mom 监控分区
Part="/backup"
Look_Out=`df | grep "$Part" | awk '{printf $5}' | sed 's/%//g' `
echo $Look_Out;
until [ "$Look_Out" -gt "90" ]
do
    echo -e "Filesystem $Part is nearly full " | mail root
    Look_Out=`df | grep "$Part" | awk '{printf $5}' | sed 's/%//g' `
    sleep 3600
done
#!/bin/bash
#until_mom 枷锁文件

until [ ! -f a.lock ]
do
        echo "check a.lock exist"
        sleep 2
done
echo "you may start another application safely"

break和continue

  • break [n]—-退出循环
    如果是在一个嵌入循环里,可以指定n来跳出循环个数
  • continue
    跳出当前循环继续下一个循环!!!

注意:continue命令类似于break命令,只有一点重要差别,它不会跳出循环,只是跳出这个循环步骤!
总结:break跳出 continue跳过

你可能感兴趣的:(Linux应用编程)