5. 流程控制

5.1 if语句

(1)格式:

格式1

格式2

多分支if

if [ 条件判断式 ];then

#程序

else

#程序

fi

if [ 条件判断式 ]

then

#程序

else

#程序

fi

if[ 条件判断1 ];then

#程序

elif [ 条件判断2 ];then

#程序

else

#程序

fi

(2)注意事项

  ①if语句使用fi结尾,和一般语言使用大括号结尾不同

  ②[ 条件判断式 ]就是使用test命令判断,所以中括号和条件判断式之间必须有空格

  ③then后面跟符合条件之后执行的程序,可以放在[]之后,用“;”分割。也可以换行写入,就不需要“;”了

【编程实验】1.统计根分区大小

#!/bin/bash
#统计根分区使用率
#Author: SantaClaus #把根分区使用率作为变量rate的值
rate=$(df -h | grep "/dev/sda5" | awk '{print $5}' | cut -d "%" -f ) if [ $rate -ge ];then
echo "Warning! /dev/sda5 is full!"
else
echo "usage:$rate%"
fi

【编程实验】2.判断文件类型

#!/bin/bash
#判断用户输入的是什么文件
#Author: Santa Claus #接收键盘输入,并赋予变量file
read -p "Please input a file name:" file if [ -z "$file" ]; then #判断file变量是否为空
echo "Error, please input a filename"
exit
elif [ ! -e "$file" ];then #判断文件是否存在
echo "Your input is not a file!"
exit
elif [ -f "$file" ];then #文件是否为普通文件
echo "$file is a regular file!"
elif [ -d "$file" ];then #是否为目录
echo "$file is a directory"
else
echo "$file is an other file!"
fi

5.2 case语句

(1)case和if…elif…else的区别

  两者都是多分支条件语句,但与if多分支语句不同的是,case语句只能判断一种关系而if语句可以判断多种条件关系

(2)case语句的格式

case $变量名 in
"值1")
#程序1
;;
"值2")
#程序2
;;
*)
#程序3
;;
esac

【编程实验】判断用户输入

#!/bin/bash
#判断用户输入
#Author:Santa Claus read -p "Please choose yes/no: " -t choice case $choice in
"yes")
echo "Your choose is yes!"
;;
"no")
echo "Your choose is no!"
;;
*)
echo "Your choose is error!"
esac

5.3 for循环

(1)语法

语法1

语法2

for 变量 in 值1 值2 值3…

do

#程序

done

for(( 初始值;循环控制条件;变量变化))

do

#程序

done

(2)应用举例

【编程实验】批量添加用户

#!/bin/bash
#批量添加用户
#Author: Santa Claus read -p "Please input user name: " -t name
read -p "Please input the number of users: " -t num
read -p "Please input the password of users: " -t pass if [ ! -z "$name" -a ! -z "$num" -a ! -z "$pass" ];then
#判断输入num是否是数字
y=$(echo $num | sed 's/[0-9]//g') #将数字替换为空 if [ -z "$y" ];then
for((i=;i<=$num;i=i+))
do
#添加用户,不显示操作结果
/usr/sbin/useradd $name$i &>/dev/null
#添加密码,不显示操作结果
echo $pass | /usr/bin/passwd --stdin $name$i &>/dev/null
done
fi
fi

5.4 while循环和until循环

(1)while的语法

while [ 条件判断式 ]
do
#程序
done

注意:while循环是不定循环,也称作条件循环。只要条件判断式成立,循环就会一直继续,直到条件判断式不成立,循环才会停止。这就和for的固定循环不太一样。

(2)until循环的语法

until [ 条件判断式 ]
do
#程序
done

注意:until,和while循环相反,在until循环时只要条件判断式不成立则进行循环,并执行循环程序。一旦循环条件成立,则终止循环。

【编程实验】while和until循环

#!/bin/bash
#从1加到100
#Author: Santa Claus #方法1:通过while
i=
s= while [ $i -le ] #小于等于100
do
s=$(( $s + $i))
i=$(( $i + ))
done echo "The sum is: $s " #方法2:until
i=
s= until [ $i -gt ] #直至i大于100
do
s=$(( $s + $i))
i=$(( $i + ))
done echo "The sum is: $s "

第10章 Shell编程(4)_流程控制的更多相关文章

  1. 第10章 Shell编程(2)_字符截取命令

    2. 字符截取命令 2.1 cut字段提取命令(grep提取行,cut提取列) (1)cut命令:#cut [选项] 文件名 选项: -f 列号:提取第几列: -d 分隔符:按照指定分隔符分割列,默认 ...

  2. 第10章 Shell编程(1)_正则表达式

    1. 基础的正则表达式 1.1 正则表达式与通配符 (1)正则表达式用来在文件中匹配符合条件的字符串,正则是包含匹配.grep.awk.sed等命令可以支持正则表达式. (2)通配符用来匹配符合条件的 ...

  3. 第10章 Shell编程(3)_字符处理命令和条件判断

    3. 字符处理命令 3.1 排序命令:sort (1)sort命令:#sort [选项] 文件名 选项 作用 -f 忽略大小写 -n 以数值型进行排序,默认使用字符串型排序 -r 反向排序 -t 指定 ...

  4. Python黑帽编程2.4 流程控制

    Python黑帽编程2.4  流程控制 本节要介绍的是Python编程中和流程控制有关的关键字和相关内容. 2.4.1 if …..else 先上一段代码: #!/usr/bin/python # - ...

  5. .Net基础篇_学习笔记_第五天_流程控制while循环

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  6. 10、shell编程+流程控制+分支嵌套

    SHELL 编程     shell 是一个命令解释器,侦听用户指令.启动这些指令.将结果返回给用户(交互式的shell)     shell 也是一种简单的程序设计语言.利用它可以编写一些系统脚本. ...

  7. linux 10 -Bash Shell编程

    二十三. Bash Shell编程:     1.  读取用户变量:     read命令是用于从终端或者文件中读取输入的内建命令,read命令读取整行输入,每行末尾的换行符不被读入.在read命令后 ...

  8. [Shell]条件判断与流程控制:if, case, for, while, until

    ---------------------------------------------------------------------------------------------------- ...

  9. 第三章 go语言 程序的流程控制

    程序的流程控制主要包括三种不同的结构,分别是顺序结构.选择结构和循环结构. ² 顺序结构最为简单,程序执行时,按照语句的顺序自上而下依次执行. ² 选择结构是根据条件表达式的结果选择执行某些语句. ² ...

随机推荐

  1. .net点选验证码实现思路分享

    哈哈好久没冒泡了,最进看见点选验证码有点意思,所以想自己写一个. 先上效果图 如果你被这个效果吸引了就请继续看下去. 贴代码前先说点思路: 1.要有一个汉字库,并按字形分类.(我在数据库里是安部首分类 ...

  2. 使用Monit监控本地进程

    目前用它监控某些服务,失败自动重启,同时监控特定的日志文件,如果有变化,就发邮件报警 安装不细写了,网上好多 我先用cat /proc/version看了下我的系统是el6的,于是wget http: ...

  3. 一百元的智能家居——Asp.Net Mvc Api+讯飞语音+Android+Arduino

    大半夜的,先说些废话提提神 如今智能家居已经不再停留在概念阶段,高大上的科技公司都已经推出了自己的部分或全套的智能家居解决方案,不过就目前的现状而言,大多还停留在展厅阶段,还没有广泛的推广起来,有人说 ...

  4. MVC常遇见的几个场景代码分享

    本次主要分享几个场景的处理代码,有更好处理方式多多交流,相互促进进步:代码由来主要是这几天使用前端Ace框架做后台管理系统,这Ace是H5框架里面的控件效果挺多的,做兼容也很好,有点遗憾是控件效果基本 ...

  5. Linux碎碎念

    在学习Linux过程中,有许多有用的小技巧.如果放在纸质的笔记本上,平时查阅会相当不方便.现在以一种“碎碎念”的方式,汇集整理在此,目前还不是很多,但随着学习.工作的深入,后续会陆陆续续添加更多的小技 ...

  6. 【HanLP】资料链接汇总

    Java中调用HanLP配置 HanLP自然语言处理包开源官方文档 了解HanLP的全部 自然语言处理HanLP 开源自由的汉语言处理包主页 GitHub源码 基于hanLP的中文分词详解-MapRe ...

  7. 使用蓝灯后,IE浏览器以及内置IE浏览器的程序不能使用的解决方案

    使用完蓝灯后,每次使用IE浏览器都不能正常使用,于是有了下面的这个方案 1.通过Win+R 打开注册表编辑器(regedit) 进入目录 HKEY_CURRENT_USER \ Software \ ...

  8. C#使用GET、POST请求获取结果

    C#使用GET.POST请求获取结果,这里以一个简单的用户登陆为例. 1. 使用GET请求获取结果 1.1 创建LoginHandler.aspx处理页面 protected void Page_Lo ...

  9. PHP static静态属性和静态方法

    这里分析了php面向对象中static静态属性和静态方法的调用.关于它们的调用(能不能调用,怎么样调用),需要弄明白了他们在内存中存放位置,这样就非常容易理解了.静态属性.方法(包括静态与非静态)在内 ...

  10. Javascript高性能编程-提高Dom访问速度

    在浏览器中对于Dom的操作和普通的脚本的操作处于两个不同的dll中,两个dll的交互是比较耗时的,优化对Dom的操作可以提高脚本的执行速度.下面是对如何优化的一些总结: 将需要多次操作的节点存储在一个 ...