-
Shell 编程 条件语句
本篇主要写一些shell
脚本条件语句的使用。
条件测试#
-
test 条件表达式
-
[ 条件表达式 ]
文件测试#
-d
:测试是否为目录(Directory)。
-e
:测试文件或目录是否存在(Exist)。
-f
:测试是否为文件(File)。
-r
:测试当前用户是否有权限读取(Read)。
-w
:测试当前用户是否有权限写入(Write)。
-x
:测试是否设置有可执行权限(Excute)。
-nt
:判断文件A
是否比文件B
新。
-ot
:判断文件A
是否比文件B
旧。
-ef
:判断两个文件是否为同一个文件,用来判断两个文件是否指向同一个inode
。
[root@localhost ~]# test -d /etc/ && echo $? 0
[root@localhost ~]# ls test.txt ls: cannot access test.txt: No such file or directory [root@localhost ~]# [ ! -e test.txt ] && touch test.txt [root@localhost ~]# ls test.txt test.txt
整数值比较#
- [ 整数1 操作符 整数2 ]
-eq
:等于(Equal) -ne
:不等于(Not Equal) -gt
:大于(Greater Than) -lt
:小于(Lesser Than) -le
:小于等于(Lesser or Equal) -ge
:大于等于(Greater or Equal)
[root@localhost ~]# history | wc -l 294 [root@localhost ~]# [ `history | wc -l` -gt 100 ] && echo "Too many" || echo "Too few" Too many [root@localhost ~]# history -c [root@localhost ~]# [ `history | wc -l` -gt 100 ] && echo "Too many" || echo "Too few" Too few
字符串比较#
=
:第一个字符串与第二个字符串相同 !=
:第一个字符串与第二个字符串不相同 -z
:检查字符串是否为空,对于未定义或赋予空值的变量视为空串
逻辑测试#
&&
:逻辑与,表示而且
,使用test
命令测试时,可改为-a
。 ||
:逻辑或,表示或者
使用test
命令测试时,可改为-o
。 !
:逻辑否,表示不
if 单分支#
[root@localhost ~]# vim score.sh
read -p "请输入成绩:" score if [ $score -ge 60 ] then echo "成绩合格" fi
[root@localhost ~]# chmod +x score.sh [root@localhost ~]# ./score.sh 请输入成绩:80 成绩合格 [root@localhost ~]# ./score.sh 请输入成绩:40
if 双分支#
[root@localhost ~]# vim score.sh
read -p "请输入成绩:" score if [ $score -ge 60 ] then echo "成绩合格" else echo "成绩不合格" fi
[root@localhost ~]# ./score.sh 请输入成绩:80 成绩合格 [root@localhost ~]# ./score.sh 请输入成绩:40 成绩不合格
if 多分支#
[root@localhost ~]# vim score.sh
read -p "请输入成绩:" score if [ $score -ge 90 ] then echo "成绩优秀" elif [ $score -ge 60 ] then echo "成绩合格" else echo "成绩不合格" fi
[root@localhost ~]# ./score.sh 请输入成绩:90 成绩优秀 [root@localhost ~]# ./score.sh 请输入成绩:80 成绩合格 [root@localhost ~]# ./score.sh 请输入成绩:40 成绩不合格
[root@localhost ~]# vim run.sh
if 嵌套#
read -p "请输入时间:" time if [ $time -le 10 ] then echo "您已进入决赛" read -p "请输入性别(man/woman)" sex if [ $sex = "man" ] then echo "您被分到男子组" else echo "您被分到女子组" fi else echo "抱歉,您被淘汰" fi
[root@localhost ~]# chmod +x run.sh [root@localhost ~]# ./run.sh 请输入时间:9 您已进入决赛 请输入性别(man/woman)man 您被分到男子组 [root@localhost ~]# ./run.sh 请输入时间:9 您已进入决赛 请输入性别(man/woman)woman 您被分到女子组 [root@localhost ~]# ./run.sh 请输入时间:11 抱歉,您被淘汰
栏目列表
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
SQL SERVER中递归
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比
一款纯 JS 实现的轻量化图片编辑器
关于开发 VS Code 插件遇到的 workbench.scm.
前端设计模式——观察者模式
前端设计模式——中介者模式
创建型-原型模式