linux for 循环 bread,shell之for循环-while循环-break-continue-exit

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值