shell之for循环-while循环-break-continue-exit

廉价感情. 提交于 2019-12-10 16:40:59

for循环:

语法:

for 变量名 in 条件

do

command

done

#for循坏的条件集合,以空格作为分隔符,分割每一个条件。

 

例子:

#!/bin/bash
#求和1之100
sum=0
for in in `seq 1 100`
do 
sum=$[$sum+$i]
done
echo $sum
#!/bin/bash
#查找/etc/目录下的目录,并长格式显示
cd /etc
for i in `ls /etc/`
do
[ -d $i ] && ls -d $i
done

 

while循环:

语法:

while 循环条件

 do

command

done

#当循环条件为 1或true或 “:”,表示死循环。

 

例子:

#!/bin/bash
#每30S监控系统负载,当大于10,发送邮件,假设邮件脚本在/usr/local/sbin/mail.py
while true
do
load=`w|head -1|awk -F 'load average: ' '{print $2}'|cut -d "." -f 1`
[ $load -gt 10 ] && /usr/local/sbin/mail.py "load high" "$load"
sleep 30 
done
#!/bin/bash
#让用户输入数字,检测若没输入字符,提示用户输入;若用户输入非数字,提示用户输入数字;直至输入数字后退出循坏
while :
do
    read -p "Please input a number: " n
    if [ -z "$n" ]
    then
        echo "you need input number"
        continue
#执行continue后,跳出本次循环,下面不执行,进行下一次循环
    fi
    n1=`echo $n|sed 's/[0-9]//g'`
    if [ -n "$n1" ]
    then
        echo "you need input numbers."
        continue
    fi
    break
#执行break后,退出此while循环
done
echo $n

 

break跳出循环:

常用于循环语句中,跳出整个循环,结束循环

例子:

#!/bin/bash
for i in `seq 1 5`
do
  if [ $i -eq 3 ]  
  then
      break
  else
      echo $i
  fi
done
echo aaaaa

结果:

#sh break.sh
++ seq 1 5
+ for i in '`seq 1 5`'
+ '[' 1 -eq 3 ']'
+ echo 1
1
+ for i in '`seq 1 5`'
+ '[' 2 -eq 3 ']'
+ echo 2
2
+ for i in '`seq 1 5`'
+ '[' 3 -eq 3 ']'
+ break
+ echo aaaaa
aaaaa

 

continue结束本次循环:

常用于循环语句中,不执行continue后面语句,直接重新开始下一次循坏

#!/bin/bash
for i in `seq 1 5`
do
  if [ $i -eq 3 ]
  then
      continue
  else
      echo $i
  fi
done
echo aaaaa

结果:

#sh continue.sh
++ seq 1 5
+ for i in '`seq 1 5`'
+ '[' 1 -eq 3 ']'
+ echo 1
1
+ for i in '`seq 1 5`'
+ '[' 2 -eq 3 ']'
+ echo 2
2
+ for i in '`seq 1 5`'
+ '[' 3 -eq 3 ']'
+ continue
+ for i in '`seq 1 5`'
+ '[' 4 -eq 3 ']'
+ echo 4
4
+ for i in '`seq 1 5`'
+ '[' 5 -eq 3 ']'
+ echo 5
5
+ echo aaaaa
aaaaa

 

exit退出整个脚本:

用于脚本中时,直接退出脚本,可定义退出时的返回值

#!/bin/bash
for i in `seq 1 5`
do
  if [ $i -eq 3 ]
  then
      exit 2
  else
      echo $i
  fi
done
echo aaaaa

结果:

#sh exit.sh
++ seq 1 5
+ for i in '`seq 1 5`'
+ '[' 1 -eq 3 ']'
+ echo 1
1
+ for i in '`seq 1 5`'
+ '[' 2 -eq 3 ']'
+ echo 2
2
+ for i in '`seq 1 5`'
+ '[' 3 -eq 3 ']'
+ exit 2


#echo $?
2

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!