Shell脚本(for循环,while循环,break跳出循环,continue结束本次循环)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Shell脚本(for循环,while循环,break跳出循环,continue结束本次循环)相关的知识,希望对你有一定的参考价值。
for循环
语法:for 变量名 in 条件 ; do done;
案例一:
计算1-100所有数字的和。
脚本:
#!/bin/bash
sum=0
for i in `seq 1 100`
do
sum=$[$sum+$i]
done
echo $sum
结果:
[[email protected] ~]# sh 1-100.sh
5050
案例二:
列出/etc/sysconfig下所有子目录,并且使用ls -d命令查看。
脚本:
#/bin/bash
cd /etc/sysconfig
for i in `ls /etc/sysconfig`
do
if [ -d $i ]
then
ls -d $i
fi
done
结果:
[[email protected] ~]# sh syscon.sh
cbq
console
modules
network-scripts
for循环有一个值得注意的地方:
案例3:
我们创建几个文件,用for循环来ls他们。
[[email protected] shili]# ll
总用量 0
-rw-r--r-- 1 root root 0 1月 16 21:16 1.txt
-rw-r--r-- 1 root root 0 1月 16 21:16 2.txt
-rw-r--r-- 1 root root 0 1月 16 21:17 3 4.txt
[[email protected] shili]# for i in `ls ./`;do echo $i ;done
1.txt
2.txt
3
4.txt
所以写脚本的时候要注意
while循环
语法 while条件;do...;done
案例1:写一个脚本来监控系统负载,当系统负载大于10时,发邮箱警告。
脚本:
#/bin/bash
while :
do
load=`w|head -1|awk -F 'load average: ' '{print $2}'|cut -d. -f1`
if [ $load -gt 10 ]
then
/usr/local/sbin/mail.py [email protected] "load high" "$load"
fi
sleep 30
done
运行结果:
[[email protected] shell]# sh -x while.sh
+ :
++ w
++ head -1
++ awk -F 'load average: ' '{print $2}'
++ cut -d. -f1
+ load=0
+ '[' 0 -gt 10 ']'
+ sleep 30
案例二:
类似于之前写过的for循环的脚本,输入一个数字,如果不是数字返回一个字符串,如果输入为空返回一个字符串,如果是数字返回。
在看脚本之前,我们需要知道continue和break的意思。
continue是继续的意思,也就是当运行结果不满足条件时,在从头循环一遍。
break是跳出循环的意思。
脚本:
#/bin/bash
while :
do
read -p "please input a number: " n
if [ -z "$n" ]
then
echo "你需要输入东西."
continue
fi
n1=`echo $n|sed 's/[0-9]//g'`
if [ ! -z "$n1" ]
then
echo "你只能输入一个纯数字."
continue
fi
break
done
echo $n
运行结果:
[[email protected] shell]# sh while2.sh
please input a number: 1d
你只能输入一个纯数字.
please input a number:
你需要输入东西.
please input a number: 1
1
break
break在while循环中,我们提到了,这里来写一个脚本,加深印象
如果输入的数字小于等于3,则返回数字,如果输入的数字大于3,则返回aaaa
脚本:
#/bin/bash
read -p "please input a number: " i
if [ $i -lt 3 ]
then
echo $i
break
else
echo aaaa
fi
运行结果:
[[email protected] shell]# sh break.sh
please input a number: 1
1
[[email protected] shell]# sh break.sh
please input a number: 5
aaaa
continue结束本次循环,而break是跳出循环,要分清楚
[[email protected] shell]# cat continue.sh
#/bin/bash
for i in `seq 1 5`
do
echo $i
if [ $i -eq 3 ]
then
continue
fi
echo $i
done
[[email protected] shell]# sh continue.sh
1
1
2
2
3
4
4
5
5
[[email protected] shell]# cat break.sh
#/bin/bash
for i in `seq 1 5`
do
echo $i
if [ $i == 3 ]
then
break
fi
echo $i
done
[[email protected] shell]# sh break.sh
1
1
2
2
3
对比两个脚本我们可以发现,break相当于跳出循环,结束。而continue相当于结束本次循环,开始新的循环,
以上是关于Shell脚本(for循环,while循环,break跳出循环,continue结束本次循环)的主要内容,如果未能解决你的问题,请参考以下文章
Shell脚本 for循环 while循环 case分支语句
Shell脚本(for循环,while循环,break跳出循环,continue结束本次循环)