shell脚本 条件语句

一、条件语句

1. test测试

test 测试文件的表达式 是否成立

格式1:test  条件表达式
格式2:[  条件表达式  ]
注意[]空格,否则会失败

操作符:
-d:测试是否为目录(Directory)
-e:测试目录或文件是否存在(Exist)
-a:测试目录或文件是否存在(Exist)   
-f:测试是否为文件(File)
-r:测试当前用户是否有权限读取(Read)
-w:测试当前用户是否有权限写入(Write)
-x:测试当前用户是否有权限执行(eXcute)
-L: 测试是否为软连接文件

属性测试补充:
-s FILE #是否存在且非空
-t fd #fd 文件描述符是否在某终端已经打开
-N FILE #文件自从上一次被读取之后是否被修改过
-O FILE #当前有效用户是否为文件属主
-G FILE #当前有效用户是否为文件属组

若真,则状态码变量 $? 返回0

若假,则状态码变量 $? 返回1

举例:

2. 比较整数数值

格式:

        [ 整数1 -操作符 整数2 ] 公式

常用操作符:

-eq:第一个数等于(Equal)第二个数

-ne:第一个数不等于(Not Equal)第二个数

-gt:第一个数大于(Greater Than)第二个数

-lt:第一个数小于(Lesser Than)第二个数

-le:第一个数小于或等于(Lesser or Equal)第二个数

-ge:第一个数大于或等于(Greater or Equal)第二个数

3. 字符串比较

格式:

[ 字符串1 = 字符串2 ] 是否相同

[ 字符串1 != 字符串2 ] 是否不相同

[ -z 字符串 ] 是否为空

[ -n 字符串 ] 字符是否存在

常用的测试操作符:

=:字符串内容相同

!=:字符串内容不同,! 号表示相反的意思

-z:字符串内容为空

-n: 字符是否存在

-z:字符串内容为空

-n: 字符是否存在

4. 逻辑测试(短路运算)

格式:

格式1:[ 表达式1 ] 操作符 [ 表达式2 ] ...

格式2:命令1 操作符 命令2 ...

常见条件:

-a 或 &&:逻辑与,第一个要真,第二个也要真,才能是真

                如果第一个为假 ,整个 就为假 不用执行下个操作

                cmd1 && cmd2

-o 或 ||:逻辑或,如果第一个为真那么就为真

                第一个为假 ,才需要执行第二个

!:逻辑否

5. 双中括号

[[ expression ]] 用法
== 左侧字符串是否和右侧的PATTERN相同
 注意:此表达式用于[[ ]]中,PATTERN为通配符
=~ 左侧字符串是否能够被右侧的正则表达式的PATTERN所匹配
 注意: 此表达式用于[[  ]]中;扩展的正则表达式

6. () {}

(CMD1;CMD2;...)和 { CMD1;CMD2;...; } 都可以将多个命令组合在一起,批量执行

#( )会开启子shell

#{ }不会开启子shell

二、if语句

1. 单分支结构

if    [  判断条件  ];
then
执行的命令
fi

2. 双分支结构

if [ 条件判断式 ]; then

当条件判断成立时,可以执行一条或多条命令

else

当条件判断不成立时,可以执行一条或多条命令

fi

3. 多分支结构

if   [ 条件判断式一 ]; then
    当条件判断成立时,可以执行一条或多条命令
elif [ 条件判断式二 ]; then
    当条件判断成立时,可以执行一条或多条命令
elif [ 条件判断式三 ]; then
    当条件判断成立时,可以执行一条或多条命令
......
else    
    当上面的条件判断都不成立时,可以执行一条或多条命令
fi 

成绩评级: 

石头剪刀布:

三、case语句

case 变量名称 in
PAT1)
    分支1
    ;;
PAT2)
    分支2
    ;;

……
*)
    默认分支
    ;;
esac

不分大小写:        

分数评级

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/512454.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

3分钟开通GPT-4

AI从前年12月份到现在已经伴随我们一年多了,还有很多小伙伴不会开通,其实开通很简单,环境需要自己搞定,升级的话就需要一张visa卡,办理visa卡就可以直接升级chatgptPLSU 一、虚拟卡支付 这种方式的优点是操作简单&…

直播预告|从一张 CD 说起,关于播放器的前世今生

1877 年,天才发明家爱迪生研发出了人类历史上第一台可以录音和放音的装置,被称为“话筒”。 当时,这台机器使用一张薄薄的铁箔盘来录制声音,爱迪生亲手转动铁箔盘,在上面刻下声音的波纹。不过这个设计并不太实用&…

Swing程序设计(11)动作事件监听器,焦点事件监听器

文章目录 前言一、事件监听器是什么?二、详细展开 1.动作事件监听器2.焦点事件监听器总结 前言 如果你是坚持从Swing程序第一篇看到了这里,恭喜你,Swing程序设计简单地落下了帷幕,关于Swing程序更深的了解,可以自行学习…

《花书》学习:LeNet

# LeNet网络架构 正常的应该是:输入→操作→输出 但都简化 要么省略 操作 要么省略 输出 # LeNet第一个卷积层详解

(学习日记)2024.03.04:UCOSIII第六节:main函数+前六节总结

写在前面: 由于时间的不足与学习的碎片化,写博客变得有些奢侈。 但是对于记录学习(忘了以后能快速复习)的渴望一天天变得强烈。 既然如此 不如以天为单位,以时间为顺序,仅仅将博客当做一个知识学习的目录&a…

Linux/Knife

Knife Enumeration nmap 第一次扫描发现系统对外开放了22和80端口,端口详细信息如下 系统对外开放了2个端口,22的ssh和80的http,先访问web看看 单看该服务,并没有发现有趣的东西,wappalyzer显示php版本为8.1.0 PHP…

国密SSL证书:保障中国网络安全的重要利器

国密SM2算法是一种基于椭圆曲线密码学的非对称加密算法,具有较高的安全性和可靠性。与传统的RSA算法相比,SM2算法在相同安全强度下具有更高的计算效率和更小的密钥长度,能够提供更好的安全保障。 SM2算法采用了国家密码管理局指定的椭圆曲线…

CSS中 ,有哪些方式可以隐藏页面元素

文章目录 CSS中 ,有哪些方式可以隐藏页面元素实现方式display:nonevisibility:hiddenopacity:0设置height 、width属性为0position:absoluteclip-path小结 CSS中 ,有哪些方式可以隐藏页面元素 实现方式 通过 css 实现隐藏元素方法有如下 : …

YOLOv9独家原创改进|加入幽灵卷积Ghost Convolution模块,轻量化!

专栏介绍:YOLOv9改进系列 | 包含深度学习最新创新,主力高效涨点!!! 一、论文摘要 由于内存和计算资源有限,在嵌入式设备上部署卷积神经网络是困难的。特征图中的冗余是那些成功的细胞神经网络的一个重要特征…

阿里新AI模型来了

B站:啥都会一点的研究生公众号:啥都会一点的研究生 整理的近期AI相关资讯,一起看看吧~ OpenAI 与 Figure 合作开发AI机器人 Figure 获得了 6.75 亿美元的 B 轮融资,投资方包括 OpenAI、微软和英伟达。在获得投资的同时&#xf…

Ubuntu下anaconda迁移到另外的目录

文章目录 前言一、原因二、迁移1.复制到指定迁移目录2. 修改复制后的anaconda3 内容3. 修改对应搭建的每个环境的pip4.修改系统配置文件,使得设置生效 三、实际测试四、总结 前言 好记性不如烂笔头,简单的记录下在ubantu18.04下迁移anaconda的目录 一、…

INFINI Labs 产品更新 | Easysearch 1.7.1发布

INFINI Labs 产品又更新啦~,包括 Console,Gateway,Agent 1.23.0 和 Easysearch 1.7.1。此次版本重点修复历史遗留 Bug 、网友们提的一些需求等。以下是本次更新的详细说明。 INFINI Console v1.23.0 INFINI Console 是一款非常轻量级的多集…