2018-4-19 17周2次课 for循环、while循环、break、continue、exit

20.10 for循环


·语法:for 变量名 in 条件; do …; done

案例1

计算1到100数字的和

#!/bin/bash
sum=0
for i in `seq 1 100`
do
    sum=$[$sum+$i]                ##核心语句
    echo $i
done
echo $sum

案例2

列出/etc/下的目录或子目录

#!/bin/bash
cd /etc/
for a in `ls /etc/`
do
    if [ -d $a ]
    then
       ls -d $a
    fi
done

ls 是用空格或回车作为分隔符,for循环以他对象,那么可能会出错






20.11/20.12 while循环


·语法 while 条件; do … ; done

案例1

#!/bin/bash
while :                                ## : 表示死循环 或者写成 while true
do
 load=`w|head -1|awk -F 'load average: ' '{print $2}'|cut -d. -f1`
 if [ $load -gt 10 ]
 then
   top|mail -s "load is high: $load" [email protected]
##或/usr/local/sbin/mail.py [email protected] "load high" "$load"
 fi
 sleep 30
done

案例2

#!/bin/bash
while :
do
  read -p "Please input a number: " n
  if [ -z "$n" ]
  then
    echo "you need input sth."
    continue                            ## continue 指继续重新再来一遍循环
  fi
  n1=`echo $n|sed 's/[0-9]//g'`
  if [ -n "$n1" ]
  then
    echo "you just only input numbers."
    continue                            ## continue 从头继续重新再来一遍循环
  fi
  break                                ##退出 while 循环
done
echo $n






20.13 break跳出循环


#!/bin/bash
for i in `seq 1 5`
do
 echo $i
 if [ $i == 3 ]                ##正常等于号应该写为 -eq,字符串等于为 ==
 then
   break
 fi
 echo $i
done
echo aaaaaaa

[[email protected] shell]# sh -x break.sh
++ seq 1 5
+ for i in '`seq 1 5`'
+ echo 1
1
+ '[' 1 == 3 ']'
+ echo 1
1
+ for i in '`seq 1 5`'
+ echo 2
2
+ '[' 2 == 3 ']'
+ echo 2
2
+ for i in '`seq 1 5`'
+ echo 3
3
+ '[' 3 == 3 ']'
+ break
+ echo aaaaaaa
aaaaaaa

原本在 i 为 3 之前,脚本一直执行到done,然后在从头循环,而 为 3 时,之间break跳出循环,

echo  aaaaaaa

·break 用在循环语句里,for 也行,while 也行






20.14 continue结束本次循环


·忽略continue之下的代码,直接进行下一次循环

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

[[email protected] shell]# sh -x continue.sh
++ seq 1 5
+ for i in '`seq 1 5`'
+ echo 1
1
+ '[' 1 == 3 ']'
+ echo 1
1
+ for i in '`seq 1 5`'
+ echo 2
2
+ '[' 2 == 3 ']'
+ echo 2
2
+ for i in '`seq 1 5`'
+ echo 3
3
+ '[' 3 == 3 ']'                ## 等于3时,直接结束了本次循环,从头开始
+ continue
+ for i in '`seq 1 5`'
+ echo 4
4
+ '[' 4 == 3 ']'
+ echo 4
4
+ for i in '`seq 1 5`'
+ echo 5
5
+ '[' 5 == 3 ']'
+ echo 5
5
+ echo aaaaaaa
aaaaaaa

·break会跳出循环,不再执行循环,而continue会结束本次循环,从头开始执行循环






20.15 exit退出整个脚本


exit直接退出脚本:

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

[[email protected] shell]# sh -x exit.sh
++ seq 1 5
+ for i in '`seq 1 5`'
+ echo 1
1
+ '[' 1 == 3 ']'
+ echo 1
1
+ for i in '`seq 1 5`'
+ echo 2
2
+ '[' 2 == 3 ']'
+ echo 2
2
+ for i in '`seq 1 5`'
+ echo 3
3
+ '[' 3 == 3 ']'
+ exit

原文地址:http://blog.51cto.com/11530642/2105565

时间: 2024-10-14 14:58:49

2018-4-19 17周2次课 for循环、while循环、break、continue、exit的相关文章

2018.4.19 17周2次课

十七周二次课(4月19日) 20.10 for循环 20.11/20.12 while循环 20.13 break跳出循环 20.14 continue结束本次循环 20.15 exit退出整个脚本 20.10 for循环 for循环结构是在日常运维工作中使用最频繁的循环结构. 语法:for 变量名 in 条件; do -; done 数字循环:vi for1.sh #!/bin/bash sum=0 for i in `seq 1 3` #循环的条件还可以引用系统命令的执行结果(如seq 1

2018.4.23 17周4次课

十七周4次课(4月23日) 20.20 告警系统主脚本 20.21 告警系统配置文件 20.22 告警系统监控项目 20.20 告警系统主脚本 创建告警系统的目录: [[email protected] /usr/local/sbin]# mkdir mon [[email protected] /usr/local/sbin]# ls mon  nginx_log_rotate.sh [[email protected] /usr/local/sbin]# cd mon [[email pro

2018.3.19 13周1次课

十三周一次课(3月19日) 12.21 php-fpm的pool 12.22 php-fpm慢执行日志 12.23 open_basedir 12.24 php-fpm进程管理 12.21 php-fpm的pool 和LAMP不同的是,在LNMP架构中,php-fpm作为独立的一个服务存在.既然是独立服务,那么它必然于自己的配置文件.Php-fpm的配置文件是/usr/local/php/etc/php-fpm.conf,它同样也支持include语句.类似于nginx.conf里面的inclu

2018.4.19 五周第二次课

yum更换国内源 首先先恢复昨天的实验,把yum备份恢复回来 [[email protected] ~]# cd /etc/yum.repos.d #进入到目录[[email protected] yum.repos.d]# ls #查看当前文件dvd.repo[[email protected] yum.repos.d]# rm -f dvd.repo #rm 删除 dvd.repo文件[[email protected] yum.repos.d]# cp /etc/yum.repos.d.b

2018.4.18 17周1次课

十七周一次课(4月18日) 20.5 shell脚本中的逻辑判断 20.6 文件目录属性判断 20.7 if特殊用法 20.8/20.9 case判断 20.5 shell脚本中的逻辑判断 格式1不带else:if 条件 ; then 语句; fi 编辑if1.sh文件:vi if1.sh #!/bin/bash/ a=5 if [ $a -gt 3 ] then echo ok fi 格式2带有else:if 条件; then 语句; else 语句; fi #!/bin/bash/ a=1

2017.12.19 2周2次课

2017.12.19二周第二次课 2.10 环境变量PATH echo用来输出PATH的值.PATH前面的$是变量的前缀符号 1.你的命令在上述几个目录里面,在输入命令时就不用输入绝对路径,直接使用.因为在输入命令时,系统会在上述的几个目录里去寻找这个命令.当然也可以输入绝对路径 Copy命令[ls]到目录tmp下,并改名[ls2],二者实现的功能一样 直接输入命令[ls2],确不行.因为命令[ls2]不在"/usr/local/sbin:/usr/local/bin:/usr/sbin:/us

2018.3.1 10周2次课

十周第二次课(3月1日) 11.14/11.15 Apache和PHP结合 11.16/11.17 Apache默认虚拟主机 11.14/11.15 Apache和PHP结合 配置httpd支持php httpd主配置文件/usr/local/apache2.4/conf/httpd.conf vim /usr/local/apache2.4/conf/httpd.conf   //修改以下4个地方 ServerName 搜索ServerName,把#ServerName www.example

2018.1.9 5周2次课

五周第二次课(1月9日) 7.6 yum更换国内源 7.7 yum下载rpm包 7.8/7.9 源码包安装 7.6 yum更换国内源 1.恢复之前备份的文件 2. 进入"/etc/yum.repos.d"目录 3.删除"CentOS-Base.repo"文件 4.下载"163.repo"文件 wget http://mirrors.163.com/.help/CentOS7-Base-163.repo curl -O http://mirrors

2018.1.16 6周2次课

六周第二次课(1月16日) 9.4/9.5 sed 9.4/9.5 sed 其实grep工具的功能还不够强大,它实现的只是查找功能,而不能把查找的内容替换.以前用vim操作文档的时候,可以查找也可以替换, 但只限于在文本内部操作,而不能输出到屏幕上.sed工具以及后面要介绍的awk工具就能把替换的文本输出到屏幕上,而且还有其他更丰富的功能.sed和awk都是流式编辑器,是针对文档的行来操作的. sed  '/x/'p filename:匹配x字符 sed  -n  '/x/'p  filenam

2018.3.19 一周第一次课

1.1 学习之初 r.aminglinux.com 学习资源软件包 课程用到的代码及命令 (centos7.aminglinux.com) 选择一个定位(发展方向.发展城市.对未来三年的规划) 学习方法 (预习复习.当日事当日毕.做爱后笔记.利用和资源) 1.2 约定 1.操作系统 centOS 7.4系统 64位 64位 http://mirrors.sohu.com/centos/7.4.1708/isos/x86_64/CentOS-7-x86_64-DVD-1708.iso 2.操作i系