@

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. C++之结构体特点

    C++的结构体和C语言的结构体有什么不同 C++的结构体其实就是类的一种,只不过类成员默认访问权限是private,结构体默认访问权限是public. C语言的结构体是不能有函数的,而C++可以有. ...

  2. utf8和utf8mb4的区别

    一.简介 MySQL在5.5.3之后增加了这个utf8mb4的编码,mb4就是most bytes 4的意思,专门用来兼容四字节的unicode.好在utf8mb4是utf8的超集,除了将编码改为ut ...

  3. 网络爬虫引发的问题及robots协议

    一.网络爬虫的尺寸 1.以爬取网页,玩转网页为目的进行小规模,数据量小对爬取速度不敏感的可以使用request库实现功能(占90%) 2.以爬取网站或爬取系列网站为目的,比如说获取一个或多个旅游网站的 ...

  4. java 编译时注解框架 lombok-ex

    lombok-ex lombok-ex 是一款类似于 lombok 的编译时注解框架. 编译时注,拥有运行时注解的便利性,和无任何损失的性能. 主要补充一些 lombok 没有实现,且自己会用到的常见 ...

  5. nginx将http升级到https并且同时支持http和https两种请求、http自动转向https

    1.http升级到https 1.1.检查 Nginx 是否支持 SSL /usr/local/nginx/sbin/nginx -V configure arguments中是否有--with-ht ...

  6. CODING 受邀参与 DevOps 标准体系之系统和工具&技术运营标准技术专家研讨会

    2019 年 5 月 24-25 日,国内领先的一站式 DevOps 解决方案供应商 CODING 作为腾讯云的深度合作伙伴,受邀参加在成都举行的由 TC608 云计算标准和开源推进委员会主办,中国信 ...

  7. 【转载】Vue.js 安装及其环境搭建

    注:最近在学习Vue,以下是环境搭配方法: ****************************************************************************** ...

  8. 给定数轴上的n个点,求距离最近的两个点的距离

    public class MinimumSpacing { //给定平面上的n个点,求距离最近的两个点的距离. //无从下手的话,先分解问题,分解成简单的,逐个分析,然后再合在一起考虑 //这是个2维 ...

  9. 如何在Mac上使用Netstat命令

    macOS上的netstat命令是一个终端命令,用于显示有关Mac网络通信的详细信息.网络通信包括Mac通过所有端口和所有应用程序与外界进行交流的所有方式.掌握netstat可以帮助您了解计算机之间的 ...

  10. mysql5.7中timestam默认值'0000-00-00 00:00:00'报错

    在mysql5.7中设置 timestamp NOT NULL DEFAULT '0000-00-00 00:00:00'会报错: 解决办法: mysql> set sql_mode='NO_A ...