流程控制语句

简单的Shell 脚本还不能满足我们日常工作的需要要,因为他不能批量的帮我们完成工作,所以Shell引入了 if、for、while、case 4种流程控制语句来帮助我们完成工作。

if 条件判断语句

if 语句可以让脚本根据实际情况自动执行相应的命令,if语句可以为单分支结构双分支结构多分支结构

if 语句由 if,then,else,fi 等关键字组成,在符合条件之后才会执行 then后面的语句,否则会执行 else 后面语句。

if 语句的使用

    # 单分支结构
if [ 条件判断语句 ];
then
要执行的语句
fi # 双分支结构
if [ 条件判断语句 ];
then
符合条件执行的语句
else
不符合条件执行的语句
fi # 多分支结构
if [ 条件判断语句 ];
then
符合条件执行的语句
elif [ 条件判断语句 ]
符合条件执行的语句
else
不符合条件执行的语句
fi

test.sh 判断是否存在这个目录,不存在则创建

    #!/bin/bash
TEST_DIR="/mnt/test/"
if [ ! -e $TEST_DIR ];
then
mkdir -p $TEST_DIR
fi

test02.sh 判断一个IP是否能ping通

    #!/bin/bash
ping -c 3 -i 0.2 -W 3 $1 &>/dev/null
if [ $? -eq 0 ];
then
echo "Host $1 is on-line"
else
echo "Host $1 is off-line"
fi

ping 命令的 -c 参数为指定请求次数为3次,请求的间隔为 0.3 秒,请求超时的时长为 3 秒,$? 命令的意思是获取上一次执行的命令的结果。0为正确,其余的都为错误。

test03.sh 可以直接使用命令的执行结果进行判断

    #!/bin/bash
if [ `ps -ef | grep mysql | grep -v grep` ];then
echo "mysql is runing"
else
echo "mysql is not runing"
fi

for 条件循环语句

for循环语句允许脚本一次性读取多个信息,然后逐一对信息进行处理,当要处理大量有规则的数据时,for 循环就有非常大的作用了。

    for 变量名 in 取值列表
do
待执行命令
done

我们可以通过一个例子来了解一下:

    #!/bin/bash
echo "read txt file test.txt"
for txt in `cat test.txt`
do
echo "file info $txt"
done

这个例子说明,可以通过for循环,从文件中读取数据,那么这样的话,我们的操作就非常的多了,比如,可以通过读取文件中的内容,创建用户,也可以修改系统的定时任务,还可以读取系统的参数文件,然后做出相应的判断,最后实现我们的功能。

上面的一个例子,是一个非常简单的功能,在实际应用中,我们还可能和 if 或者别的命令一起使用

while 条件循环语句

while 条件循环语句其实和 for 语句一样,都是循环语句,但是这两个循环语句的循环条件有点不一样, for 语句,是跟据读入的数组长度进行执行的,但是while 循环语句的执行条件是跟据条件是否为true 来执行的,所以两者的结构上有点不一样,但是实现的功能其实还是一样的。

结构:

    while 条件语句
do
命令语句
done

case 条件判断语句

case 语句是在多个范围之内进行匹配数据,若匹配成功则执行相关命令并结束整个条件测试,而如果数据不在所列出的范围内,则会去执行 * 号内的默认命令。

    case 变量值 in
模式1)
命令1
;;
模式2)
命令2
;;
*)
默认命令
esac

下面我们就通过一个简单的命令进行测试:

    #!/bin/bash
read -p "请输入一个字符,并按Enter确认:" KEY
case "$KEY" in
[a-z][A-Z])
echo "你输入的是字母:$KEY"
;;
[0-9])
echo "你输入的是数字:$KEY"
;;
*)
echo "你输入的是空格,或者特殊字符:$KEY"
esac

使用case可以帮助我们在有许多判断的时候进行简单一点的脚本编写,并且结构也更加的合理


细节决定成败!

个人愚见,如有不对,恳请扶正!

Linux | Shell流程控制语句的更多相关文章

  1. Linux Shell 流程控制语句

    * 本文主要介绍一些Linux Shell 常用的流程控制语句* 1. if 条件语句:if-then/if-elif-fi/if- else-fi if [条件判断逻辑1];then command ...

  2. linux shell 流程控制(条件if,循环【for,while】,选择【case】语句实例 --转载

    http://www.cnblogs.com/chengmo/archive/2010/10/14/1851434.html nux shell有一套自己的流程控制语句,其中包括条件语句(if),循环 ...

  3. linux shell 流程控制

    导读 和Java.PHP等语言不一样,linux shell有一套自己的流程控制语句,其中包括条件语句(if),循环语句(for,while),选择语句(case).下面我将通过例子介绍下,各个语句使 ...

  4. shell流程控制语句

    linux shell有一套自己的流程控制语句,其中包括条件语句(if),循环语句(for,while,until),选择语句(case/select).下面我将通过例子介绍下,各个语句使用方法. 1 ...

  5. [转]linux shell 流程控制(条件if,循环【for,while】,选择【case】语句实例

    原文链接:http://www.cnblogs.com/chengmo/archive/2010/10/14/1851434.html linux shell有一套自己的流程控制语句,其中包括条件语句 ...

  6. 5.Shell 流程控制语句

    1.流程控制语句 通过if.for.while.case这4种流程控制语句来学习编写难度更大.功能更强的Shell脚本 4.3.1 if条件测试语句: if条件测试语句可以让脚本根据实际情况自动执行相 ...

  7. shell 流程控制语句

    case语句 case $变量名 in "值1")   如果变量的值等于值1,则执行程序1 ;;  "值2")   如果变量的值等于值2,则执行程序2 ;;   ...

  8. Shell流程控制语句for

    for语法格式: for 变量 in 参数列表 do 命令 done 或者 for 变量 in 参数列表 ; do 命令 done for语句流程控制图: 实例: [root@youxi1 ~]# v ...

  9. Linux Shell——流程控制

    1. 创建交互式脚本 使用 echo命令的选项 关于各种命令的使用,可以使用man 命令来查看命令的详细用法介绍.例如,我想看下 echo 的用法和各种选项.可以执行 man echo.执行结果如下: ...

随机推荐

  1. JAVA基础语法-day01

    JAVA基础语法 1.注释 单行注释--// 多行注释--/* */ 文档注释--/** */ 2.标识符 只能大小写字母,$,下划线开头,其它不行. 3.数据类型 基本数据类型--整数,浮点,字符, ...

  2. Archlinux zsh终端美化 powerlevel10k配置

    环境 Arch Linux + KDE Plasma 安装zsh yay -S zsh 更改默认终端 chsh -s /bin/zsh 安装oh-my-zsh-git archlinuxcn源有打好的 ...

  3. AtCoder Regular Contest 119 C - ARC Wrecker 2(同余定理+思维)

    Problem Statement There are NN buildings along the AtCoder Street, numbered 11 through NN from west ...

  4. docker启动失败如何查看容器日志

    docker启动失败如何查看容器日志 在使用docker的时候,在某些未知的情况下可能启动了容器,但是过了没几秒容器自动退出了.这个时候如何排查问题呢? 通常碰到这种情况无非就是环境有问题或者应用有问 ...

  5. celery Django 简单示例

    一.目录结构 二.创建worker文件夹 __init__.py # -*- coding:utf-8 -*-import osfrom celery import Celery, platforms ...

  6. Python+Selenium自动化-安装模块和浏览器驱动操作方法

    Python+Selenium自动化-安装模块和浏览器驱动操作方法 1.安装模块文件 pip install selenium 2.安装浏览器驱动 我们主要用的浏览器驱动有chrome浏览器.fire ...

  7. 获取当前进程的pid

    获取当前进程的pid import java.lang.management.ManagementFactory; import java.lang.management.RuntimeMXBean; ...

  8. Go benchmark 详解

    前言 基准测试(benchmark)是 go testing 库提供的,用来度量程序性能,算法优劣的利器. 在日常生活中,我们使用速度 m/s(单位时间内物体移动的距离)大小来衡量一辆跑车的性能,同理 ...

  9. TTC测距算法

    TTC测距算法 输入输出接口 Input:(1)人与车(或车与车)的距离 (2)人与车(或车与车)的相对速度 Output:TTC collision time 算法介绍和设计方案 TTC是Time- ...

  10. MindArmour差分隐私

    MindArmour差分隐私 总体设计 MindArmour的Differential-Privacy模块,实现了差分隐私训练的能力.模型的训练主要由构建训练数据集.计算损失.计算梯度以及更新模型参数 ...