linux shell 逻辑判断 [] [[]] -n -z 用法区别
1、在中括号中,判断变量的值, 加不加双引号的问题?
-z 判断 变量的值,是否为空; zero = 0
- 变量的值,为空,返回0,为true
- 变量的值,非空,返回1,为false
-n 判断变量的值,是否为空 name = 名字
- 变量的值,为空,返回1,为false
- 变量的值,非空,返回0,为true
pid="123"
[ -z "$pid" ] 单对中括号变量必须要加双引号
[[ -z $pid ]] 双对括号,变量不用加双引号
[ -n "$pid" ] 单对中括号,变量必须要加双引号
[[ -z $pid ]] 双对中括号,变量不用加双引号
2、多个条件判断,[] 和 [[]] 的区别?
[[ ]] 双对中括号,是不能使用 -a 或者 -o的参数进行比较的
[[ 5 -lt 3 || 3 -gt 6 ]] 一个条件满足,就成立 或者的关系
[[ 5 -lt 3 ]] || [[3 -gt 6 ]] 写在外面也可以
&& 必须两个条件同时满足,和上述一样,这里想说明的问题的是:
[[ 5 -lt 3]] -o [[ 3 -gt 6 ]] [[ 5 -lt 3 -o 3 -gt 6 ]]
[[ 5 -lt 3 -a 3 -gt 6 ]] [[ 5 -lt 3 -a 3 -gt 6 ]]
-a 和 -o就不成立了,是因为,[[]] 双对中括号,不能使用 -o和 -a的参数
直接报错:
[ ] 可以使用 -a -o的参数,但是必须在 [ ] 中括号内,判断条件,
例如:
[ 5 -lt 3 -o 3 -gt 2 ] 或者条件成立
[5 -lt 3 ] -o [ 3 -gt 2] 或者条件, 这个不成立,因为必须在中括号内判断
如果想在中括号外判断两个条件,必须用&& 和 || 比较
[5 -lt 3 ] || [ 3 -gt 2]
[5 -gt 3 ] && [ 3 -gt 2] 成立
相对的,|| 和 && 不能在中括号内使用,只能在中括号外使用
3、当判断某个变量的值是否满足正则表达式的时候,必须使用[[ ]] 双对中括号
单对中括号,直接报错:
linux shell 逻辑判断 [] [[]] -n -z 用法区别相关推荐
- 【Shell系列】$(shell pwd)和$(pwd)用法区别
Date: 2019-5-8 1.参考 $(shell pwd)和$(pwd)有什么区别 shell 基础 $(cd `dirname $0`;pwd) Linux常用命令简述–dirname与bas ...
- linux here用法,linux shell的here document用法(cat EOF)
什么是Here Document? Here Document 是在Linux Shell 中的一种特殊的重定向方式,它的基本的形式如下 cmd << delimiter Here Doc ...
- linux shell 逻辑判断
下面是linux常用逻辑判断 -b file 若文件存在且是一个块特殊文件,则为真 -c file 若文件存在且是一个字符特殊文件,则为真 -d file ...
- linux shell的here document用法(cat EOF)
什么是Here Document? Here Document 是在Linux Shell 中的一种特殊的重定向方式,它的基本的形式如下 cmd << delimiter Here D ...
- linux shell里面nohup的用法
为什么80%的码农都做不了架构师?>>> 百度了很多,但都不是官方的,按照linux命令中,一切可以--help的思想 我们就来 --help下. 其实linux命令不难学 只 ...
- linux shell数组与字典用法总结
shell里面也有数组和所谓的字典,数组分为索引数组和关联数组(关联数组也就是在其他语言里面的字典,在数组和字典的操作方式基本一致). 1. 数组 1.1 创建数组 - 创建空数组 `names=() ...
- linux shell awk 中 printf 用法
目录 printf 简介 printf 转义字符 printf 修饰符 printf 格式说明符 示例1 示例2 示例3 printf 简介 打印输出时,可能需要指定字段间的空格数,从而把列排整齐.在 ...
- linux shell 执行 几种方式区别 bash source .
bash xx.sh 或者sh xxx.sh 脚本没有可执行权限或没有指定解析器,使用的方法. 会产生一个子shell来执行脚本,脚本执行完毕后再返回父shell,所以脚本里面的变量获取不了. /xx ...
- linux shell脚本 -f -z啥意思 侵删
文件表达式 -e filename 如果 filename存在,则为真 -d filename 如果 filename为目录,则为真 -f filename 如果 filename为常规文件,则为真 ...
最新文章
- 牛逼的人没有不看书的(送书福利)
- IDEA热布署报错java.lang.IllegalStateException: Restarter has not been initialized
- jQuery EasyUI API 中文文档 - 树表格(TreeGrid)
- leetcode 740. Delete and Earn | 740. 删除并获得点数(暴力递归->傻缓存->DP)
- 动力强劲的星型发动机,为何不用在汽车上呢?
- poi中文api文档
- 数据结构之堆(Heap),堆的相关操作,用堆模拟优先级队列
- Flask-认识flask
- 【MATLAB】设定坐标的轴的范围
- Flash Cs4安装之后打不开(启动界面一闪而过)
- 安装python Scipy库记录
- 如果您已经熟悉K8s,现在不妨试试K9s
- 计算机应用1.2版,计算机应用基础(附光盘基础模块Windows7+Office2010第2版中等职业教育课程改革国家规划新教材)...
- openlayers 地图上加图标_OpenLayers学习笔记中级篇(四、地图图标操作)
- java拼图游戏(带文档资料)
- 猿创征文|我命由我,不由天
- ai绘画到底有大强?我开发了一款ai绘画(来看看)
- PCI与PCIe学习一——硬件篇
- 子查询(exists子查询)
- 也许我们喜欢数学,只是不喜欢数学课