@

1. 条件测试语句

测试语句十Shell的特有功能,Shell提供了一组测试运算符,通过这些运算符,Shell程序能够判断某个或者某几个条件是否成立。

在Shell中用户可以使用测试语句来测试指定条件表达式的条件的真和假。当指定条件为真,条件测试的返回值为0;反之,条件测试的返回值为非0值。条件测试的语法有两种,分别是test命令和[]命令

1.1 test语句

test expression

其中,参数expression表示需要进行测试的语句,整个test语句为真,test返回0,若为假,则返回非0

笔者强烈推荐test语句,[]语句十分糟糕,要求十分严格,会出现各式各样的错误,不利于初学者学习

1.2[]语句

[expression]

其中,参数expression的语句与test命令中语法完全相同。条件表达式和左右方括号之间都必须有一个空格

1.3文件测试

文件测试指的是根据给出的路径,判断当前路径下的文件属性及类型。

test op file
[ op file ]
环境变量 说明
-a 若文件存在,则条件测试返回结果为0
-b 若文件存在,且为块文件,则条件测试返回结果为0
-c 若文件存在,且为字符文件,则条件测试返回结果为0
-d 若文件存在,且为目录文件,则条件测试返回结果为0
-e 若文件,则条件测试返回为0
-f 若文件存在,且为常规文件,则条件测试返回结果为0
-r 若文件存在且可读,则条件测试返回结果为0
-w 若文件存在且可写,则条件测试返回结果为0
-x 若文件存在且可执行,则条件测试返回结果为0
-p 若文件存在且是FIFO文件,则条件测试返回结果为0
-s 若文件存在且不是空文件,则条件测试返回结果为0

1.4字符串测试

test 操作符
操作符 说明
str 判断指定字符串是否为空
str1==str2 若字符串相等就为0
-n str 判断字符串是否为非空串,若为空串则测试结果为0
-z str 若为空串,则测试结果为0

1.5数值测试

与字符串类似,数值测试也有两种形式的语法

test number1 op number2

或者

[ number1 op number2 ]
操作符 说明
n1 -eq n2 比较n1是否等于n2,如果等于,则测试结果为0
n1 -ne n2 若n1不等于n2,则测试结果为0
n1 -lt n2 比较n1是否小于n2,n1如果小于n2,测试结果为0
n1 -le n2 比较n1是否小于等于n2,n1如果小于等于n2,测试结果为0
n1 -gt n2 比较n1是否大于n2,n1如果大于n2,测试结果为0
n1 -ge n2 比较n1是否大于等于n2,n1如果大于等于n2,测试结果为0

1.5逻辑操作符

逻辑操作符相当于c语言中的&&、||、!

操作符 说明
!exp 逻辑非,条件表达式为假,则该操作符的运算结果为真
exp1 -a exp2 逻辑与,条件exp1和exp2的值都为真时,整个表达式为真
exp1 -o exp2 逻辑或,条件表达式exp1和exp2的值有一个为真,整个表达式为真
(exp) 圆括号,将表达式分组,优先得到结果

linux学习(十)Shell中的控制语句的更多相关文章

  1. linux 学习10 shell 基础

    10.1 Shell概述 .Shell是什么 Shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用Shell来启动.挂起.停止甚至是编写一 ...

  2. (原创)鸟哥linux学习script shell相关笔记

    在使用鸟哥linux进行script shell学习的过程中碰到一些不太明白的知识点,在这里进行一些记录 1. [root@www scripts]# vi sh03.sh #!/bin/bash # ...

  3. Linux 学习 (八) Shell

    Linux达人养成计划 I 学习笔记 Shell 是什么: Shell 是一个命令解释器 Shell 还是一个功能相当强大的编程语言,易编写,易调试,灵活性较强 Shell 的分类: Bourne S ...

  4. linux 学习随笔-shell基础知识

    1:用户的shell历史命令保存在home/username/.bash_history中 #!!  执行用户的上一条命令 #!pw  执行命令历史中最近一次以pw开头的命令 2:'*'来匹配零或多个 ...

  5. Linux学习之Shell编程基础

    转自:http://my.oschina.net/itblog/blog/204410 1 语法基本介绍1.1 开头 程序必须以下面的行开始(必须方在文件的第一行): #!/bin/sh 符号#!用来 ...

  6. linux学习总结----shell编程

    ## 环境变量 ## 全局变量 ``` 常见的全局环境变量 PATH 指令的搜索路径 HOME 用户的家目录 LOGNAME 登录名 SHELL 脚本的类型 使用全局环境变量 echo $PATH 自 ...

  7. (六)linux 学习 -- 从 shell 眼中看世界

    The Linux Command Line 读书笔记 - 部分内容来自 http://billie66.github.io/TLCL/book/chap08.html 文章目录 字符展开 `*` 路 ...

  8. linux 学习随笔-shell简单编写

    脚本最好都放在/usr/local/sbin中 脚本的执行 sh -x 脚本.sh -x可以查看执行过程 1在脚本中使用变量 使用变量的时候,需要使用$符号:  #!/bin/bash  ##把命令赋 ...

  9. Linux学习笔记 - Shell 控制语句

    if 语句 语法: #!/bin/bash a= b= if [ $a -eq $b ] then echo "a 等于 b" elif [ $a -gt $b ] then ec ...

随机推荐

  1. EtreCheck是否修复恶意软件和广告软件?为什么EtreCheck无法制作截图?

    EtreCheck for Mac是一款Mac上的软件,有很对人对这款软件并不熟系,今天小编就来给大家介绍一下这款软件最常出现的问题—EtreCheck是否修复恶意软件和广告软件?为什么EtreChe ...

  2. RDP矢量数据压缩算法

    在绘制对象边缘时涉及到了这个算法,记录一下. 该算法递归进行,首先设定一个阈值,在点集的第一个点和最后一个点间拉一条线段,找出剩下的点集中离线段最远的一个点,如果该点到线段的距离小于阈值则舍弃中间的所 ...

  3. 对于prim的一个有趣但有点奇怪的想法

    prim算法找最小生成树适用于无向图,对于有向加权图会产生错误. 比如 1->2,8 1->3,8 2->3,4 3->2,3 最小生成树1->2->3 而不是3- ...

  4. Prometheus学习系列(八)之Prometheus API说明

    前言 本文来自Prometheus官网手册 和 Prometheus简介 HTTP API 在Prometheus服务器上的/api/v1下可以访问当前稳定的HTTP API. 将在该端点下添加任何非 ...

  5. PlayJava Day022

    List接口: ArrayList:数组集合,底层使用数组,查询快,增删慢 LinkedList:链表集合,底层使用链表形式,查询慢,增删快 注意: 对于随机访问get和set,ArrayList优于 ...

  6. Java每日一面(Part2数据库)[19/11/28]

    作者:故事我忘了¢个人微信公众号:程序猿的月光宝盒 1.如何设计一个关系型数据库 如上图,首先划分成两大部分: ​ 1.存储部分:类似一个文件系统,把数据存储到一个持久化设备中,如机械硬盘,固态等 ​ ...

  7. ksoap2 android 调用WebService

    webService,soap,wsdl的基本概念? 详情请看维基百科 基于soap 1.1, soap 1.2 的请求和响应数据源 查找了很久都是基于json格式传输数据,但是最终还是找到了基于xm ...

  8. webpack css模块化和ant-design按需加载冲突

    其实具体出现了什么问题,我也记得不清楚了,今天突然回想起来必须记录一下,一个思想就是用exclude将node_module目录下的文件排除,网上有很多相关例子,但不知是不是因为时间久远,都不生效,无 ...

  9. 追踪SQL Server执行delete操作时候不同锁申请与释放的过程

    一直以为很了解sqlserver的加锁过程,在分析一些特殊情况下的死锁之后,尤其是并发单表操作发生的死锁,对于加解锁的过程,有了一些重新的认识,之前的知识还是有一些盲区在里面的.delete加锁与解锁 ...

  10. Oracle 11g Dataguard参数详解

    https://www.jb51.net/article/52269.htm注:本文译自<Oracle Data Guard 11g Handbook> Page 78 – Page 88 ...