使用 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 详解的更多相关文章

  1. Shell脚本 /dev/null 2>&1详解

    Shell脚本---- /dev/null 2>&1详解   1.可以将/dev/null看作"黑洞". 它非常等价于一个只写文件. 所有写入它的内容都会永远丢失. ...

  2. shell脚本if判断语句报错[: too many arguments的两种原因

    shell脚本,if判断语句报错[: too many arguments 我遇到过两种情况: 1.第一中情况就是网上大家说的,字符串变量中可能存在空格,shell解析时将其认为是多个参数,再进行判断 ...

  3. Shell脚本———— /dev/null 2>&1详解

    1.可以将/dev/null看作"黑洞". 它非常等价于一个只写文件. 所有写入它的内容都会永远丢失. 而尝试从它那儿读取内容则什么也读不到. 然而, /dev/null对命令行和 ...

  4. linux shell脚本学习xargs命令使用详解

    作用是将参数列表转换成小块分段传递给其他命令,以避免参数列表过长的问题 xargs是给命令传递参数的一个过滤器,也是组合多个命令的一个工具.它把一个数据流分割为一些足够小的块,以方便过滤器和命令进行处 ...

  5. Shell脚本中判断输入变量或者参数是否为空的方法

    shell判断一个变量是否为空方法总结 https://www.jb51.net/article/154835.htm 1.判断变量 复制代码代码如下: read -p "input a w ...

  6. Shell脚本中判断输入参数个数的方法投稿:junjie 字体:[增加 减小] 类型:转载

    Shell脚本中判断输入参数个数的方法 投稿:junjie 字体:[增加 减小] 类型:转载   这篇文章主要介绍了Shell脚本中判断输入参数个数的方法,使用内置变量$#即可实现判断输入了多少个参数 ...

  7. shell脚本中判断上一个命令是否执行成功

    shell脚本中判断上一个命令是否执行成功 shell中使用符号“$?”来显示上一条命令执行的返回值,如果为0则代表执行成功,其他表示失败.结合if-else语句实现判断上一个命令是否执行成功. 示例 ...

  8. [转]mysqldump备份还原和mysqldump导入导出语句大全详解

    FROM : http://www.cnblogs.com/zeroone/archive/2010/05/11/1732834.html mysqldump备份还原和mysqldump导入导出语句大 ...

  9. gvoory脚本中关于HttpClient使用详解实例

    一.gvoory脚本中关于HttpClient使用详解实例 HttpClient:是一个接口 首先需要先创建一个DefaultHttpClient的实例 HttpClient httpClient=n ...

随机推荐

  1. 【PRINCE2是什么】PRINCE2认证之七大原则(6)

    我们先来回顾一下,PRINCE2七大原则分别是持续的业务验证,经验学习,角色与责任,按阶段管理,例外管理,关注产品,剪裁 第六个原则:关注产品 PRINCE2指出,一个成功的项目必须以产品为导向,而不 ...

  2. json数据格式及json校验格式化工具简单实现

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, ...

  3. TextView使用大全

    最近打算写一个系列的android初级开发教程,预计40篇以上的文章,结合我实际工作中的经验,写一些工作中经常用到的技术,让初学者可以少走弯路,写一个系列的话,大家学习起来也有头有尾. 今天就从我们每 ...

  4. Android开发之基本控件和详解四种布局方式

    Android中的控件的使用方式和iOS中控件的使用方式基本相同,都是事件驱动.给控件添加事件也有接口回调和委托代理的方式.今天这篇博客就总结一下Android中常用的基本控件以及布局方式.说到布局方 ...

  5. Hibernate中的锁机制

    锁机制:是数据库为了保证数据的一致性<一个事务的各种操作不相互影响>而使各种共享资源在被并发访问访问变得有序所设计的一种规则,用来保证在当前用户进行操作数据的时候其他的用户不能对同一数据进 ...

  6. 用php实现一个简单的链式操作

    最近在读<php核心技术与最佳实践>这本书,书中第一章提到用__call()方法可以实现一个简单的字符串链式操作,比如,下面这个过滤字符串然后再求长度的操作,一般要这么写: strlen( ...

  7. 你真的会玩SQL吗?简单的数据修改

    你真的会玩SQL吗?系列目录 你真的会玩SQL吗?之逻辑查询处理阶段 你真的会玩SQL吗?和平大使 内连接.外连接 你真的会玩SQL吗?三范式.数据完整性 你真的会玩SQL吗?查询指定节点及其所有父节 ...

  8. 微信小程序(微信应用号)开发ide安装解决方法

    这两天整个技术圈都炸锅了,微信小程序(微信应用号)发布内测,首批200家收到邀请,但是没受邀请的同学,也不用担心,下面介绍一下解决方法. 首先需要下载ide,昨天只需要下载0.9版本的编辑器并替换文件 ...

  9. sql将查询的结果集一次性插入到表变量中

    sql代码: declare @Subject table (--题目表变量 SubjectID int, Question nvarchar(MAX), CorrectAnswer ), Expla ...

  10. Gate Of Babylon bzoj 1272

    Gate Of Babylon (1s 128MB) babylon [问题描述] [输入格式] [输出格式] [样例输入] 2 1 10 13 3 [样例输出] 12 [样例说明] [数据范围] 题 ...