七、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
上一篇 下一篇

猜你喜欢

热点阅读