shell中数字、字符串、文件比较测试
1.逻辑运算符:与&& 或|| 非!
&&:双目操作符:与运算中:如果第一个数为假,结果一定为假 ==> 短路操作符
||:双目操作符:或运算中:如果第一个数为真,结果一定为真 ==> 短路操作符 !:单目操作符: 对数取反. |
例子:
[root@lbg test]# echo 2 && echo 3 2 3 [root@lbg test]# echo 2 || echo 3 2 [root@lbg test]# |
2.测试表达式
[ 表达式 ] ---比较数字大小 ,表达式与中括号两端必须有空格 [[ 表达式 ]] --比较字符大小,表达式与中括号两端必须有空格。 |
num1 -eq num2 //测试num1是否等于num2 (eq:equal)
-ne //测试num1是否不等于num2 -gt //大于 great than -lt //小于 less than -ge //大于等于 great equal -le //小于等于 less equal |
例子:
[root@lbg test]# [ 1 -lt 2 ] && echo yes || echo no yes [root@lbg test]# [ 1 -gt 2 ] && echo yes || echo no no |
'string1' == 'string2' //做等值比较
!=,<> //不等值比较 -n "$a" //跟变量名,a变量的值的长度非0为真 -z "$a" //测试是否为空的,空为真,非空为假,即值得长度为0为真 |
例子:
[root@lbg test]# [[ a == b ]] && echo yes || echo no no [root@lbg test]# [[ a != b ]] && echo yes || echo no yes [root@lbg test]# echo $a 123 [root@lbg test]# [[ -n $a ]] && echo yes || echo no yes [root@lbg test]# declare b ---$b为空 [root@lbg test]# [[ -n $b ]] && echo yes || echo no no [root@lbg test]# [[ -z $b ]] && echo yes || echo no yes |
-e /path/to/somewhere 是否存在,存在为真 --exist
-f /path/to/somewhere 是否是文件,是则为真 --file -d //测试是否是目录,是为真 --directory -l //测试是否是链接,是为真 --link -r //是否可读 --read -w //是否可写 --write -x //是否可执行 --execute 说明:文件测试用单个[]或者[[]]都行。 |
例子:
[root@lbg test]# ll ----只有普通文件a -rw-r--r-- 1 root root 37 Oct 5 19:13 a [root@lbg test]# [[ -e /test/a ]] && echo yes || echo no yes [root@lbg test]# [[ -e /test/b ]] && echo yes || echo no no [root@lbg test]# [[ -d /test/a ]] && echo yes || echo no no [root@lbg test]# [ -x /test/a ] && echo yes || echo no no |
6.组合条件测试
! //取反,写在表达式之前,且用空格隔开
-a //与条件,写在[]里面,表示and -o //或条件,写在[]里面,表示or |
例子:
[root@lbg test]# [ d == f ] && echo yes || echo no no [root@lbg test]# [ ! d == f ] && echo yes || echo no yes [root@lbg test]# [ ! d == f ] && [ a == b ]&& echo yes || echo no no [root@lbg test]# [ ! d == f -a c == b ] && echo yes || echo no no [root@lbg test]# [ ! d == f -o c == b ] && echo yes || echo no yes |
shell中数字、字符串、文件比较测试的更多相关文章
- Linux Shell 04 数字/字符串/文件测试
一. 数字测试 格式:n1 -op n2 测试操作op: eq/ne/le/ge/lt/gt --> 等于/不等于/小于等于/大于等于/小于/大于 1. 数字比较可以使用特殊的( ...
- (转)Shell中获取字符串长度的七种方法
Shell中获取字符串长度的七种方法 原文:http://blog.csdn.net/jerry_1126/article/details/51835119 求字符串操作在shell脚本中很常用,下面 ...
- shell中取字符串子串的几种方式 截取substr
shell中取字符串子串的几种方式 echo "123456789" | awk '{print substr($0,5,2)}' 截取 1)awk中函数substrsubstr( ...
- shell中截取字符串的方法总结
shell中截取字符串的方法有很多种, ${expression}一共有9种使用方法. ${parameter:-word} ${parameter:=word} ${parameter:?word} ...
- shell中的字符串操作和数学运算
字符串操作 变量赋值: 说明:变量值可以用单引号.双引号.或者不加任何引号来赋值给变量 变量名="变量值" 变量名='变量值' 变量名=变量值 例如:str="hel ...
- 在Shell中使用函数文件
需要编写一个较庞大的脚本时,可能会涉及许多函数.变量.这是通常建议将众多的函数.变量放入一个单独的脚本内.这样做的好处很明显,不用担心某个函数.变量是否已经被定义和使用,也不用频繁地定义.清除函数和变 ...
- LinuxShell脚本编程基础5--数值,字符串,文件状态测试,((..))和[[..]]的使用
1.数值比较 ! /bin/bash echo "enter a score:" read num1 ] then echo "Very Good" elif ...
- 【前端_js】js中数字字符串之间的比较
js中字符串间的比较是按照位次优先,比较各字符的ASCII大小,包括数字字符串之间的比较. 1.console.log("1"<"3");//true 2 ...
- Shell中判断字符串是否为数字的6种方法分享
#!/bin/bash ## 方法1 a=1234;echo "$a"|[ -n "`sed -n '/^[0-9][0-9]*$/p'`" ] &&a ...
随机推荐
- linux centos 03
linux用户权限相关 root用户 相当于qq群的群主 sudo命令 相当于qq群的管理员 普通用户 相当于qq群的 水军 超级用户root的UID是 0 组ID也是 0 普通用户的UID ...
- docker下安装kafka和kafka-manager
1.下载镜像 这里使用了wurstmeister/kafka和wurstmeister/zookeeper这两个版本的镜像 docker pull wurstmeister/zookeeper doc ...
- 跟我一起学Redis之看完这篇比常人多会三种类型实战(又搞了几个小时)
前言 对于Redis而言,很多小伙伴只关注其关键的五大基础类型:string.hash.list.set.sorted set(有序集合),其实还有三种特殊类型在很多应用场景也比较适合使用,分别是:b ...
- form单提交后按钮变成失效变灰
<html> <head> <meta http-equiv="Content-Type" content="text/html; char ...
- 【Azure云服务 Cloud Service】Cloud Service的实例(VM)中的服务描述Software Protection 与 Windows Defender, 如何设置Windows Defender Antivirus服务
1)Software Protection 与 Windows Defender是两个独立的服务.在Windows 服务中他们的描述分别为 Software Protection Enables th ...
- Docker学习笔记之-在CentOS中安装Docker
上一节演示了如何 通过Xshell连接CentOS服务,链接:Docker学习笔记之-通过Xshell连接 CentOS服务 本节将演示 如何在CentOS中安装 Docker 第一步:更新系统包到最 ...
- ElasticSearch研究
前言 ES相关技术文档,很久之前看的,一门技术时间长不去研究就会容易忘了,应有些小伙伴的要求希望我做一期ES技术专栏,我就把以前看过的相关文档整理整理,给大家分享下. 1 ElasticSearc ...
- 数据结构(C++)——顺序表
顺序表和链表的比较 1.存取方式 顺序表可以随机访问,而链表只能从表头顺序查找.(因此经常查找顺序表某一个元素时,顺序表更适合) 2.逻辑结构与物理结构 顺序表中,逻辑上相邻的元素,其物理存储位置也相 ...
- router-view组件在app.vue中渲染不出来怎么办
1.在app.vue使用router-view组件直接渲染 页面什么都没显示,可能问题出在路由配置上了,检查路由是否配置完好,路由挂载那里必须使用routes属性 2.在app.vue中router- ...
- golang1.16内嵌静态资源指南
今天是万圣节,也是golang1.16新特性冻结的日子.不得不说自从go2路线发布之后golang新特性的迭代速度也飞速提升,1.16中有相当多的重要更新,包括io标准库的重构,语言内置的静态资源嵌入 ...