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 20:20
下一篇 2017-04-17 21:29

相关推荐

  • N22-第五周作业

    1、显示当前系统上root、fedora或user1用户的默认shell; [root@localhost ~]# cat /etc/passwd | grep "^root" | cut -d: -f7 /bin/bash 2、找出/etc/rc.d/init.d/functions文件中某单词后面跟一组小括号的行,形如:hello()…

    Linux干货 2016-09-15
  • 第五周作业

    1、显示当前系统上root,fedora或user1用户的默认shell。 [root@hostname ~]# grep -E ‘^(root|fedora|user1)’ /etc/passwd | cut -d: -f1,7 root:/bin/bash 2、找出/etc/rc.d/init.d/functions文件中某词后面跟一组小括号的行,形如:…

    Linux干货 2017-08-04
  • OpenSSL

    三个组件: openssl: 多用途的命令行工具; libcrypto: 加密解密库; libssl:ssl协议的实现; PKI:Public Key Infrastructure CA RA CRL 证书存取库  建立私有CA: OpenCA openssl  证书申请及签署步骤: 1、生成申请请求; 2、RA核验; 3、CA签署; 4…

    Linux干货 2015-03-21
  • linux用户和组管理

    linux系统是一个多用户的系统,每个账号都干什么用,你必须了如指掌。 【Linux用户】 即UID分为两大类:管理员 UID:0                               普通用户 UID:…

    Linux干货 2016-08-05
  • 马哥教育网络班21期-第八周课程练习

    第八周作业 1、请描述网桥、集线器、二层交换机、三层交换机、路由器的功能、使用场景与区别。 集线器:集线器工作在OSI七层模型的物理层;功能是将传输信号再生或放大,收到数据后将数据转发至除接收接口外的所有接口(广播)),但是由于集线器所有端口属于共享带宽,属于同一个冲突域和属于同一个广播域,容易产生信号冲突导致帧碎片,现今大部分集线器已经被交换机所替代; 网…

    Linux干货 2016-09-01
  • 第一次写的linux脚本

    刚开始学的时候,都是一些基本的命令,总是无法把它们联系到一块去,现在刚开始接触脚本,顿时感觉压力好大,基础命令如果记不牢,很有可能就挂了,下面我把近几天学习的一些脚本命令及练习拿来分享一下,供大家参考,同时加深我的记忆。 首先是写脚本的格式,我这里用vim编辑器来写的脚本,因为它的色彩非常明艳,易于区分。基本格式如下: #!/bin/bash 第一行一般为调…

    Linux干货 2017-08-05

评论列表(1条)

  • renjin
    renjin 2017-04-21 11:00

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