shell-添加条件测试的多种方法语法介绍与简单实战
1. 条件测试
1) 测试语句
1) 条件测试语法
在bash的各种流程控制结构中通常要进行各种测试,然后根据测试结果执行不同的操作,有时也会通过与if等条件语句相结合,使我们可以方便的完成判断。
2) 【语法说明】
格式1:test<测试表达式>
格式2:[<测试表达式>]
格式3:[[<测试表达式>]]
说明:
格式1和格式2是等价的。
格式3为扩展的test命令,有网友推荐用推荐3,老男孩习惯使用格式2.
提示:
在[[]]中可以使用通配符进行模式匹配。&&、||、>、<等操作符可以应用于[[]]中,但不能应用于[]中。
对整数进行关系运算,也可以使用shell的算术运算符(())。
3) 【语法例子】
格式1:test<测试表达式>
范例1:test测试文件
[root@1-241 scripts]# test -f file && echo true ||echo false
false
[root@1-241 scripts]# touch file
[root@1-241 scripts]# test -f file && echo true ||echo false
true
范例2:test命令非(!)的写法
[root@1-241 scripts]# test ! -f file && echo true ||echo false
true
[root@1-241 scripts]# touch file
[root@1-241 scripts]# test ! -f file && echo true ||echo false
false
格式2:[<测试表达式>]
范例:[]
[root@1-241 scripts]# [ -f file ] && echo true ||echo false
false
[root@1-241 scripts]# touch file
[root@1-241 scripts]# [ -f file ] && echo true ||echo false
true
[root@1-241 scripts]# [ -f file ] && cat file
[root@1-241 scripts]# rm -rf file
[root@1-241 scripts]# [ -f file ] && cat file
[root@1-241 scripts]# cat file
cat: file: 没有那个文件或目录
格式3:[[<测试表达式>]]
范例:[[]]
[root@1-241 scripts]# [[ -f file ]] && echo true || echo false
false
[root@1-241 scripts]# [[ ! -f file ]] && echo true || echo false
true
[root@1-241 scripts]# [[ -f file && -f folder ]] && echo true || echo false
false
[root@1-241 scripts]# [ -f file && -f folder ] && echo true || echo false
-bash: [: missing `]'
false
[root@1-241 scripts]# [ -f file -a -f folder ] && echo true || echo false
false
[root@1-241 scripts]# touch file folder
[root@1-241 scripts]# [ -f file -a -f folder ] && echo true || echo false
true
[root@1-241 scripts]#
[root@1-241 scripts]# rm -rf file
[root@1-241 scripts]# [ -f file -a -f folder ] && echo true || echo false
false
2. 文件测试操作符
在书写测试表达式时,可以使用表1.3.4中的文件测试操作符
表1.3.4常用文件测试操作符号
常用文件测试操作符号的记忆方法:
[root@1-241 scripts]# echo f=file
f=file
[root@1-241 scripts]# echo d=dirctory
d=dirctory
[root@1-241 scripts]# echo s=size
s=size
[root@1-241 scripts]# echo e=exist
e=exist
[root@1-241 scripts]# echo r=read
r=read
[root@1-241 scripts]# echo w=write
w=write
[root@1-241 scripts]# echo x=executable
x=executable
[root@1-241 scripts]# echo nt="new than"
nt=new than
[root@1-241 scripts]# echo ot="old than"
ot=old than
shell-添加条件测试的多种方法语法介绍与简单实战的更多相关文章
- Linux添加虚拟网卡的多种方法
Linux添加虚拟网卡的多种方法有时候,一台服务器需要设置多个ip,但又不想添加多块网卡,那就需要设置虚拟网卡.这里介绍几种方式在linux服务器上添加虚拟网卡. 我们向eth0中添加一块虚拟网卡: ...
- Shell编程-条件测试 | 基础篇
什么是Shell Shell是一个命令解释器,它会解释并执行命令行提示符下输入的命令.除此之外,Shell还有另一个功能,如果要执行多条命令,它可以将这组命令存放在一个文件中,然后可以像执行Linux ...
- 二、shell 脚本条件测试
目录 一.条件测试 test 格式 文件测试 文件测试常见选项 整数值比较 字符串比较 浮点数的运算 逻辑测试 二.if语句 1单分支 2双分支结构 3多分支结构 三元运算符 三.case 一.条件测 ...
- shell脚本条件测试与比较
1.条件测试常用语法 test 测试表达式 利用test命令进行条件测试表达式,test命令与测试表达式之间至少有一个空格 [ 测试表达式 ] 通过[ ]中括号进行条件测试表达式,[]中括号边界与测试 ...
- 关于shell脚本——条件测试、if语句、case语句
目录 一.条件测试 1.1.表达说明 1.2.test命令 文件测试 1.3.整数值比较 1.4.字符串比较 1.5.逻辑测试 二.if语句 2.1.单分支结构 2.2.双分支结构 2.3.多分支结构 ...
- Linux Shell 03 条件测试
条件测试 方式一:在Bash中 test命令和[]是等价的. test命令: if test $n1 -eq $n2 then echo "The two number are equal& ...
- Shell获取字符串长度的多种方法总结
摘自:https://www.jb51.net/article/121290.htm 前言 我们在日常工作中,对于求字符串操作在shell脚本中很常用,实现的方法有很多种,下面就来给大家归纳.汇总了求 ...
- shell 复合条件测试 if [ $1 == "1" -o $1 == "0" ] ------==和-eq怎么用
想要实现: ”,或者$1等于“” ];then 输出一些东西 ”,或者$1等于“” ];then 输出一些东西 fi 这里比较难操作的是等于和或者: 等于: -eq 或者 == 或者: -o 见: ...
- Shell编程-05-Shell中条件测试与比较
目录 Shell脚本条件测试 Shell文件测试 Shell字符测试 Shell整数测试 Shell逻辑测试 Shell条件测试总结 Shell脚本条件测试 在Shell脚本中各种条件结构和流 ...
随机推荐
- String painter (区间dp)
There are two strings A and B with equal length. Both strings are made up of lower case letters. Now ...
- [HGAME Week2] Cosmos的博客后台
觉得这道题考察的东西比较综合而且比较简单,就写上了.因为写这篇文章的时候环境已经关闭了,所以引用了其他师傅wp的图片 本题考察了:php://filter伪协议文件包含.var_dump()输出GLO ...
- Zabbix如何解决“System time is out of sync (diff with Zabbix server > 60s)”告警
Zabbix如何解决"System time is out of sync (diff with Zabbix server > 60s)"这种告警呢? 这个错误对应的中文提 ...
- 有关Sql中时间范围的问题
背景 有时候需要利用sql中处理关于时间的判别问题,简单的如比较时间的早晚,判断一个时间是否在一段时间内的问题等.如果简单将时间判断与数值比较等同,那就会出现一些问题. 处理方式 处理Sql时间范围的 ...
- 手写mybatis框架-增加缓存&事务功能
前言 在学习mybatis源码之余,自己完成了一个简单的ORM框架.已完成基本SQL的执行和对象关系映射.本周在此基础上,又加入了缓存和事务功能.所有代码都没有copy,如果也对此感兴趣,请赏个Sta ...
- JS实现串行请求
使用async和await var fn = async function(promiseArr) { for(let i = 0,len = arr.length; i<len; i++) { ...
- oracle之三手工备份与恢复
手工备份与恢复 2.1 手工备份和恢复的命令 1)备份和还原都使用OS命令,如linux中的cp 2)恢复用sqlplus命令:recover 2.2 备份前要对数据库进行检查: 1) 检查需要备份的 ...
- mysql浅谈--事务ACID特性
mysql MySQL 是最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS(Relational Database Management System:关系数据库管 ...
- 静态代理、jdk动态代理、cglib动态代理
一.静态代理 Subject:抽象主题角色,抽象主题类可以是抽象类,也可以是接口,是一个最普通的业务类型定义,无特殊要求. RealSubject:具体主题角色,也叫被委托角色.被代理角色.是业务逻辑 ...
- java中的几种基础排序
import java.util.Random;import java.util.Arrays; public class Puppy { public static void main(St ...