七、Shell流程控制-for语句
2021-01-11 本文已影响0人
一个反派人物
1. for循环
1.1 语法1,for i in
for i in模式,语法:
for a in 列表对象
do
command $a
done
列表对象:
1. 数列{1..100}
2. 文件用空白字符(空格、回车、\t)分隔的每个段落,如`cat list.txt`
3. var1 var2 var3...
例子:
#显示9到1的倒计时
#!/bin/bash
for i in `seq 9 -1 1`
do
echo -n -e "\b$i"
sleep 1
done
echo
1.2 语法2,C语言的模式
C语言的模式,语法
for ((变量;条件;自增减运算))
do
command
done
单变量例子:
#从1打印到9
#!/bin/bash
for ((i=1;i<10;i++))
do
echo "$i"
done
多变量的例子:
#打印两列,1到9,9到1
#!/bin/bash
for ((i=1,j=9;i<10,j>0;i++,j--))
do
echo -e "$i\t$j"
done
2. 循环控制语句
为防止死循环占用大量CPU资源,需要配置循环控制语句
2.1 sleep N
在循环中休眠N秒
例子:
#每隔60秒检查IP是否存活,虽然是死循环,但是占用CPU非常小
#!/bin/bash
if [ $# -ne 1 ]
then
exit
fi
hostip=$1
for ((;;))
do
ping -c 1 -W 1 $hostip &>/dev/null
if [ $? -eq 0 ]
then
echo "$hostip exits"
else
echo "$hostip does not exit"
fi
sleep 60
done
2.2 continue跳过循环中的某次循环
#跳过5打印1到9
#!/bin/bash
for ((i=1;i<10;i++))
do
if [ $i -eq 5 ]
then
continue
else
echo "$i"
fi
done
2.3 break跳出循环继续执行后续代码
break N,跳出N层循环,不写数字默认跳出1层。
#到打印1到9,到5退出循环
#!/bin/bash
for ((i=1;i<10;i++))
do
if [ $i -eq 5 ]
then
break
else
echo "$i"
fi
done