第10章 Shell编程(4)_流程控制
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)_流程控制的更多相关文章
- 第10章 Shell编程(2)_字符截取命令
2. 字符截取命令 2.1 cut字段提取命令(grep提取行,cut提取列) (1)cut命令:#cut [选项] 文件名 选项: -f 列号:提取第几列: -d 分隔符:按照指定分隔符分割列,默认 ...
- 第10章 Shell编程(1)_正则表达式
1. 基础的正则表达式 1.1 正则表达式与通配符 (1)正则表达式用来在文件中匹配符合条件的字符串,正则是包含匹配.grep.awk.sed等命令可以支持正则表达式. (2)通配符用来匹配符合条件的 ...
- 第10章 Shell编程(3)_字符处理命令和条件判断
3. 字符处理命令 3.1 排序命令:sort (1)sort命令:#sort [选项] 文件名 选项 作用 -f 忽略大小写 -n 以数值型进行排序,默认使用字符串型排序 -r 反向排序 -t 指定 ...
- Python黑帽编程2.4 流程控制
Python黑帽编程2.4 流程控制 本节要介绍的是Python编程中和流程控制有关的关键字和相关内容. 2.4.1 if …..else 先上一段代码: #!/usr/bin/python # - ...
- .Net基础篇_学习笔记_第五天_流程控制while循环
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- 10、shell编程+流程控制+分支嵌套
SHELL 编程 shell 是一个命令解释器,侦听用户指令.启动这些指令.将结果返回给用户(交互式的shell) shell 也是一种简单的程序设计语言.利用它可以编写一些系统脚本. ...
- linux 10 -Bash Shell编程
二十三. Bash Shell编程: 1. 读取用户变量: read命令是用于从终端或者文件中读取输入的内建命令,read命令读取整行输入,每行末尾的换行符不被读入.在read命令后 ...
- [Shell]条件判断与流程控制:if, case, for, while, until
---------------------------------------------------------------------------------------------------- ...
- 第三章 go语言 程序的流程控制
程序的流程控制主要包括三种不同的结构,分别是顺序结构.选择结构和循环结构. ² 顺序结构最为简单,程序执行时,按照语句的顺序自上而下依次执行. ² 选择结构是根据条件表达式的结果选择执行某些语句. ² ...
随机推荐
- 聊聊Unity项目管理的那些事:Git-flow和Unity
0x00 前言 目前所在的团队实行敏捷开发已经有了一段时间了.敏捷开发中重要的一个话题便是如何对项目进行恰当的版本管理.项目从最初使用svn到之后的Git One Track策略再到现在的GitFlo ...
- 踩石行动:ViewPager无限轮播的坑
2016-6-19 前言 View轮播效果在app中很常见,一想到左右滑动的效果就很容易想到使用ViewPager来实现.对于像我们常说的banner这样的效果,具备无限滑动的功能是可以用ViewPa ...
- JS 判断数据类型的三种方法
说到数据类型,我们先理一下JavaScript中常见的几种数据类型: 基本类型:string,number,boolean 特殊类型:undefined,null 引用类型:Object,Functi ...
- 谈一下关于CQRS架构如何实现高性能
CQRS架构简介 前不久,看到博客园一位园友写了一篇文章,其中的观点是,要想高性能,需要尽量:避开网络开销(IO),避开海量数据,避开资源争夺.对于这3点,我觉得很有道理.所以也想谈一下,CQRS架构 ...
- 深入理解C#
简单认识.NET框架 (1)首先我们得知道 .NET框架具有两个主要组件:公共语言进行时CLR(Common Language Runtime)和框架类库FCL(Framework Class ...
- Convert BSpline Curve to Arc Spline in OpenCASCADE
Convert BSpline Curve to Arc Spline in OpenCASCADE eryar@163.com Abstract. The paper based on OpenCA ...
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(68)-微信公众平台开发- 资源环境准备
系列目录 前言: 本次将学习扩展企业微信公众号功能,微信公众号也是企业流量及品牌推广的主要途径,所谓工欲善其事必先利其器,调试微信必须把程序发布外网环境,导致调试速度太慢,太麻烦! 我们需要准备妥当才 ...
- 【置顶】CoreCLR系列随笔
CoreCLR配置系列 在Windows上编译和调试CoreCLR GC探索系列 C++随笔:.NET CoreCLR之GC探索(1) C++随笔:.NET CoreCLR之GC探索(2) C++随笔 ...
- 【用户交互】APP没有退出前台但改变系统属性如何实时更新UI?监听系统广播,让用户交互更舒心~
前日,一小伙伴问我一个问题,说它解决了半天都没解决这个问题,截图如下: 大概楼主理解如下: 如果在应用中有一个判断wifi的开关和一个当前音量大小的seekbar以及一个获取当前电量多少的按钮,想知道 ...
- 代码的坏味道(16)——纯稚的数据类(Data Class)
坏味道--纯稚的数据类(Data Class) 特征 纯稚的数据类(Data Class) 指的是只包含字段和访问它们的getter和setter函数的类.这些仅仅是供其他类使用的数据容器.这些类不包 ...