shell脚本语言中的选择执行

shell脚本语言中的选择执行

概述

程序执行过程分为顺序执行、选择执行和循环执行。
顺序执行是指程序按照步骤一步一步地运行。
选择执行是指程序根据特定条件选择两项或者多项中的一项运行。
循环执行是指程序根据特定条件重复执行直到某个节点结束,继续运行其他步骤。
本篇文章从判断条件和条件判断式简要说明shell脚本语言中程序选择执行的用法。

shell脚本中的判断条件

test的测试功能

文件存在及类型测试 test [OPTION] FILE

-e 该文件名是否存在 -f 该文件名是否存在且为普通文件  -d 该文件名是否存在且为目录 -b 该文件名是否存在且为块设备文件 -c 该文件名是否存在且为字符设备文件  -S 该文件名是否存在且为Socket文件 -p 该文件名是否存在且为管道文件  -l 该文件名是否存在且为连接文件

文件权限测试 test [OPTION] FILE

-r 该文件名是否存在且具有可读属性  -w 该文件名是否存在且具有可写属性  -x 该文件名是否存在且具有可执行属性  -u 该文件名是否存在且具有“SUID”属性 -g 该文件名是否存在且具有“SGID”属性  -k 该文件名是否存在且具有“STICKY”属性  -s 该文件名是否存在且文件为非空白文档

文件之间比较 test FILE1 [OPTION] FILE2

-nt 判断前文件是否比后文件新  -ot 判断前文件是否比后文件旧 -ef 判断两个文件是否指向一个inode

整数之间的比较 test INT1 [OPTION] INT2

-eq 两数值相等  -ne 两数值不等 -gt 前数大于后数 -lt 前数小于后数 -ge 前数大于等于后数  -le 前数小于等于后数

字符串测试

test -z STRING 判断字符串是否为空,为空则为ture test -n STRING 判断字符串是否为空,为空则为false //-n可省略  test STR1 = STR2 判断前后字符串是否相同,相同为ture  test STR1 != STR2 判断前后字符串是否相同,相同为false

逻辑链接

-a 与关系 -o 或关系  ! 非关系

判断符号[]

判断符号用法等同于test,但是要注意:

中括号内每个组件都要有空格键分隔

中括号内的变量要用双引号括起来

中括号内的常量要用单引号或者双引号括起来

条件判断式

  1. if..then
if [条件判断式] then 条件成立时执行指令 fi
if [条件判断式1] then  
    条件1成立时执行指令 else[条件判断式2] then
    条件1失败时条件2成功时执行指令 else 条件1条件2失败时执行指令
fi
  1. case..esac
case $变量名称 in "变量1")
    变量名称的值为变量1时执行指令
    ;; "变量2")
    变量名称的值为变量2时执行指令
    ;;
    
    *)
    变量名称的值不为变量1且不为变量2时执行指令
    exit1  
    ;;

shell脚本语言中的判断执行就是将判断条件和条件判断式合理地结合使用。

原创文章,作者:easyTang,如若转载,请注明出处:http://www.178linux.com/73592

(0)
easyTangeasyTang
上一篇 2017-04-17
下一篇 2017-04-17

相关推荐

  • N25-Bazinga-第四周作业

    N25-Bazinga-第四周作业 1.复制/etc/ske1目录为/home/tuser1,要求/home/tuser及其内部文件的属组和其他用户均没有任何访问权限。 [root@localhost ~]# cp -a /etc/skel/ /home/tuser1 [root@localhost&nbsp…

    Linux干货 2016-12-21
  • 磁盘管理总结

    linux磁盘管理总结 一、向linux主机添加硬盘 不同类型的硬盘,linux需要不同的驱动。kernel需要驱动,硬盘是基本的硬件设备,驱动一般不需要安装了。 (1)linux内核的设计架构,使用了模块。除了系统必须的驱动,一般以模块方式加载到内核中。内核的模块放在。/lib/modules内。 (2)linux一切皆文件,设备也是文件,ls -l 查看…

    Linux干货 2016-08-29
  • N26 第二周作业

    1、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。 文件管理类命令有:mkdir rmdir cp mv rmmkdir:创建文件夹命令格式:mkdir [OPTION]… DIRECTORY… # 创建日期文件夹       &…

    Linux干货 2017-01-17
  • 3rd work

    1、列出当前系统上所有已经登陆的用户名,注意同一个用户登陆多次,则只显示一次即可。 [root@localhost ~]# w 11:50:45 up 24 min,  3 users,  load average: 0.04, 0.04, 0.10 USER     TTY      FROM             LOGIN@   IDLE   JCP…

    Linux干货 2017-10-08
  • yum详解及源码包的编译安装

    yum的功能:     在我们使用rpm包安装程序时,各个程序包之间可能存在非常严重的依赖关系,这就导致我们在安装一个包的同时还需要安装其他存在依赖关系的包,因此我们可以使用rpm包的前端管理工具yum,可通过yum所支持的文件共享机制来解决各个rpm包之间的依赖关系。 yum仓库的配置文件:   …

    Linux干货 2016-08-25
  • Linux的发展史

       在早期电气化发展时代1946年诞生了计算机事物,早期的计算机体积巨大,只能适用于一个人操作,而且运行速度慢。但已经形成计算机的架构体系,为了尽可能的榨干计算机资源在计算机发展的二阶段,于是有当时著名实验室BELL ,GE,MIT共同研发了一款叫MULTCS操作系统,这也是最早的操作系统。   1946年一个没有完成的梦想,…

    Linux干货 2016-10-13

评论列表(1条)

  • renjin
    renjin 2017-04-21 11:00

    主要介绍了shell中的判断符,和测试符,内容总结的很详细,排版也很好,建议把之前学过的尽可能的总结进来,加油,加油!