IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> Linux-Shell(九、break和continue) -> 正文阅读

[系统运维]Linux-Shell(九、break和continue)

自己抄书用于记忆的,可能会加点自己写的东西

18.8 使用break和continue控制循环

有时需要基于某些准则退出循环或跳过循环步

shell提供两个命令实现此功能

break和continue

18.8.1 break

break命令允许跳出循环

break通常在进行一些处理后退出循环或case语句

如果是在一个嵌入循环里,可以指定跳出的循环个数

例如如果在两层循环内,用break 2刚好跳出整个循环

18.8.2 跳出case语句

#下面的例子中
#脚本进入死循环直至用户输入数字大于5
#要跳出这个循环,返回到shell提示符下,break使用脚本如下

$ pg breakout
#!/bin/bash

while :
do
  echo -n "Enter any number[1..5]"
  read ANS
  case $ANS in
    1|2|3|5) echo "great you entered a number between 1 and 5"
    ;;
    *) echo "Wrong number..bye"
    break
  esac
done

18.8.3 continue

continue命令类似于break命令,只有一点重要差别,它不会跳出循环,只是跳出这个循环步

18.8.4 浏览文件行

#下面是一个前面用过的人人文件列表,但是现在加入了一些头信息
$ pg names2.txt
------LISTING OF PERSONMEL FILE------
-------- TAKEN AS AT 06/1999 --------
Louise Conrad:Accounts:ACC8987
Peter James:Payroll:PR489
Fred Terms:Customer:CUS012
James Lenod:Accounts:ACC887
Frank Pavely:Payroll:PR489

#假定现在需要处理此文件,看过文件之后知道头两行并不包含个人信息,因此需要跳过这两行
#也不需要处理雇员Peter James,这个人已经离开公司,但没有从人员文件中删除
#对于头信息
#只需简单计算所读行数,当行数大于2时开始处理,如果处理人员名字为Peter James,也将跳过此纪录

$ pg whilecontinue
#!/bin/bash

SAVEDIFS=$IFS
IFS=:
INPUT_FILE=names2.txt
NAME_HOLD="Peter James"
LINE_NO=0

if [ -s $INPUT_FILE ];then
  while read NAME DEPT ID
  do
    LINE_NO=`expr $LINE_NO + 1`
    if [ "$LINE_NO" -le 2 ];then
      continue
    fi
    if [ "$NAME" = "$NAME_HOLD" ];then
      continue
    else
      echo "Now processing...$NAME $DEPT $ID"
    fi
  done < $INPUT_FILE
IFS=$SAVEDIFS
else
  echo "`basename $0`:Sorry file not found or there is no data in the file" >&2
  exit 1
fi

#运行上面脚本,得出
$ whilecontinue
Louise Conrad Accounts ACC8987
Fred Terms Customer CUS012
James Lenod Accounts ACC887
Frank Pavely Payroll PR489

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-03-30 19:10:50  更:2022-03-30 19:12:23 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 23:17:54-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码