shell 脚本之判断语句 if 详解
使用 Linux 系统这么长时间,对 shell 脚本也算是比较熟悉。其实不管是搞开发,还是搞运维,shell 脚本都是必备的基本技能。这次抽时间好好总结一下 shell 方面的知识,综合的再学习一下,记录。这篇文章总结的是 shell 脚本的 if 语句的使用。
一、if 语句的基本语法
if [ 条件判断 ]; then
... ...
elif [ 条件判断 ]; then
... ...
else
... ...
fi
二、文件/目录的判断
关于文件或目录的相关判断方法:
[ -e file ] 判断文件是否存在
[ -f file ] 判断文件是否是普通文件
[ -d file ] 判断文件是否是目录文件
[ -b file ] 判断文件是否块设备文件
[ -c file ] 判断文件是否字符设备文件
[ -s file ] 判断文件是否是非空文件
[ -r file ] 判断文件是否可读
[ -w file ] 判断文件是否可写
[ -x file ] 判断文件是否可执行
三、数字比较判断
关于针对数字的判断,首先定义a=10, b=8
[root@vip ~]# a= b=
[ $a -eq $b ] 判断 a 是否等于 b
[ $a -ne $b ] 判断 a 是否不等 b
[ $a -gt $b ] 判断 a 是否大于 b
[ $a -ge $b ] 判断 a 是否大等 b
[ $a -lt $b ] 判断 a 是否小于 b
[ $a -le $b ] 判断 a 是否小等 b
四、字符串的判断和比较
关于针对字符串的判断比较,首先定义 str1=abc, str2=abd
[root@vip ~]# str1=abc; str2=abd [ -z str ] 判断 str 是否长度为0
[ -n str ] 判断 str 是否长度不为0
[ str1 == str2 ] 判断 str1 与 str2 是否相等
[ str1 != str2 ] 判断 str1 与 str2 是否不等
[ str1 \> str2 ] 判断 str1 是否大于 str2
[ str1 \< str2 ] 判断 str1 是否小于 str2
[[ str1 > str2 ]] 判断 str1 是否大于 str2
[[ str1 < str2 ]] 判断 str1 是否小于 str2
五、逻辑判断
[ $a -lt $b -a $str1 == $str2 ] a 大于 b, 而且 str1 与 str2 相等 (&&)
[ $a -lt $b -o $str1 == $str2 ] a 大于 b, 或者 str1 与 str2 相等 (||)
[[ $a -gt $b && $str1 == $str2 ]] a 大于 b, 而且 str1 与 str2 相等 (&&)
[[ $a -gt $b || $str1 == $str2 ]] a 大于 b, 或者 str1 与 str2 相等 (||)
[ $a -lt $b ] && [ $str1 == $str2 ] a 大于 b, 而且 str1 与 str2 相等 (&&)
[ $a -lt $b ] || [ $str1 == $str2 ] a 大于 b, 或者 str1 与 str2 相等 (||)
六、常用 if 实例
待更新。。。
shell 脚本之判断语句 if 详解的更多相关文章
- Shell脚本 /dev/null 2>&1详解
Shell脚本---- /dev/null 2>&1详解 1.可以将/dev/null看作"黑洞". 它非常等价于一个只写文件. 所有写入它的内容都会永远丢失. ...
- shell脚本if判断语句报错[: too many arguments的两种原因
shell脚本,if判断语句报错[: too many arguments 我遇到过两种情况: 1.第一中情况就是网上大家说的,字符串变量中可能存在空格,shell解析时将其认为是多个参数,再进行判断 ...
- Shell脚本———— /dev/null 2>&1详解
1.可以将/dev/null看作"黑洞". 它非常等价于一个只写文件. 所有写入它的内容都会永远丢失. 而尝试从它那儿读取内容则什么也读不到. 然而, /dev/null对命令行和 ...
- linux shell脚本学习xargs命令使用详解
作用是将参数列表转换成小块分段传递给其他命令,以避免参数列表过长的问题 xargs是给命令传递参数的一个过滤器,也是组合多个命令的一个工具.它把一个数据流分割为一些足够小的块,以方便过滤器和命令进行处 ...
- Shell脚本中判断输入变量或者参数是否为空的方法
shell判断一个变量是否为空方法总结 https://www.jb51.net/article/154835.htm 1.判断变量 复制代码代码如下: read -p "input a w ...
- Shell脚本中判断输入参数个数的方法投稿:junjie 字体:[增加 减小] 类型:转载
Shell脚本中判断输入参数个数的方法 投稿:junjie 字体:[增加 减小] 类型:转载 这篇文章主要介绍了Shell脚本中判断输入参数个数的方法,使用内置变量$#即可实现判断输入了多少个参数 ...
- shell脚本中判断上一个命令是否执行成功
shell脚本中判断上一个命令是否执行成功 shell中使用符号“$?”来显示上一条命令执行的返回值,如果为0则代表执行成功,其他表示失败.结合if-else语句实现判断上一个命令是否执行成功. 示例 ...
- [转]mysqldump备份还原和mysqldump导入导出语句大全详解
FROM : http://www.cnblogs.com/zeroone/archive/2010/05/11/1732834.html mysqldump备份还原和mysqldump导入导出语句大 ...
- gvoory脚本中关于HttpClient使用详解实例
一.gvoory脚本中关于HttpClient使用详解实例 HttpClient:是一个接口 首先需要先创建一个DefaultHttpClient的实例 HttpClient httpClient=n ...
随机推荐
- 环境搭建系列-系统安装之centos 6.5安装与配置
按照国际惯例,系列目录先奉上: 系列一:系统安装之centos 6.5安装与配置 系列二:准备工作之Java环境安装 系列三:数据为先之MySQL读写集群搭建 系列四:谈分布式之RabbitMQ集群搭 ...
- ASP.NET AntiXSS的作用
XSS跨站脚本攻击 是指用户输入HTML编码对网站进行跨站攻击. 通过使用FCKeditor.FreeTextBox.Rich TextBox.Cute Edito ...
- 【WCF】为终结点地址应用地址头
记得不久前,老周写过博文,探讨过在ContextScope以一定的范内向发出的消息中插入消息头,scope只能为特定的某一次服务操作的调用而添加SOAP头,要是需要在每次调用操作协定的时候都插上Hea ...
- 【Win 10 应用开发】三维变换
所谓三维变换,其实是在二维平面上产生三维的视觉效果.前面老周简单提了一下透视效果,如果透视效果不能满需求,那可以考虑用三维变换. UIElement类有一个属性叫Transform3D,它定义的类型为 ...
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(45)-工作流设计-设计步骤
系列目录 步骤设计很重要,特别是规则的选择. 我这里分为几个规则 1.按自行选择(在起草时候自行选审批人,比较灵活) 2.按上级(无需指定,当时需要知道用户的上司是谁,可以在职位管理设置,或者在用户表 ...
- Core Java 总结(字符和字符串类问题)
所有代码均在本地编译运行测试,环境为 Windows7 32位机器 + eclipse Mars.2 Release (4.5.2) 2016-10-17 整理 字符,字符串类问题 正则表达式问题 J ...
- 5.在MVC中使用泛型仓储模式和工作单元来进行增删查改
原文链接:http://www.c-sharpcorner.com/UploadFile/3d39b4/crud-operations-using-the-generic-repository-pat ...
- VS2015 Update2中有关cordova和xamarin安装的问题
最近VS2015出了Update2,当然是第一时间进行了安装,中间过程曲折,反复安装卸载n次,也算是获得了一定的安装经验值.现在说一下经常出的问题. Update2里最吸引人的当然是跨平台开发的部分, ...
- RabbitMQ Config
默认访问地址:http://localhost:15672/ 要想修改内网访问: %APPDATA%\RabbitMQ\ 目录下添加文件 rabbitmq.config [ {rabbit, [%% ...
- Python 历遍目录
Automate the Boring Stuff 学习笔记 01 使用 os 模块的 walk() 函数可以实现历遍目录的操作,该函数接收一个绝对路径字符串作为必选参数,返回三个参数: 当前目录—— ...