当前位置: 首页 > backend >正文

shell脚本第二阶段-----选择结构

一、条件判断

1.语法格式

格式1:test 条件表达式

格式2:[ 条件表达式 ]

格式3:[[ 条件表达式 ]] 支持正则~

说明:man test 去查看,很多的参数都用来进行条件判断

2.条件判断相关参数

与文件存在与否的判断

-e 是否存在     不管是文件还是目录,只要存在,条件就成立
-f 是否为普通文件
-d 是否为目录
-S socket
-p pipe
-c character
-b block
-L 软link三种语法格式:
test -e file     只要文件存在条件为真
[ -d /shell01/dir1 ] 判断目录是否存在,存在条件为真
[ ! -d /shell01/dir1 ] 判断目录是否存在,不存在条件为真
[[ -f /shell01/1.sh ]] 判断文件是否存在,并且是一个普通的文件-s 判断文件是否有内容(大小),非空文件条件满足
说明:-s表示非空,! -s 表示空文件
说明:1.sh文件里文件
文件权限相关的判断
-r 当前用户对其是否可读
-w 当前用户对其是否可写
-x 当前用户对其是否可执行
-u 是否有suid
-g 是否sgid
-k 是否有t位两个文件的比较判断file1 -nt file2 比较file1是否比file2新
file1 -ot file2 比较file1是否比file2旧
file1 -ef file2 比较是否为同一个文件,或者用于判断硬链接。是否指向同一个inodetest file1 -nt file2
[ file1 -ot file2 ]

整数判断(重要)

整数之间的判断-eq 相等
-ne 不等
-gt 大于
-lt 小于
-ge 大于等于
-le 小于等于

字符串判断(重要)

-z 是否为空字符串         字符串长度为0,就成立
-n 是否为非空字符串       只要字符串非空,就是成立
string1 = string2        是否相等
string1 != string2       不等

------------------------------------------------------------

多重条件判断

逻辑与 :         -a           或者&&

[1 -eq 1 -a 1-ne 1]      或者[ 1 -eq 1 ] && [ 1 -ne 1 ]

逻辑或:      -o           或者||

[1 -eq 1 -o 1-ne 1]      或者[ 1 -eq 1 ] || [ 1 -ne 1 ]

总结:

1.; && ||这三个都可以用来分割命令

2.;完全不考虑前面的语句是否正确执行,都会执行;号后面的内容

3.&&需要考虑&&前面的语句的正确性,前面语句正确执行才会执行&&后的内容;反之亦然

make && make install

4.|| 需要考虑||前面的语句的非正确性,前面语句执行错误才会执行||后面的内容;反之亦然

5.如果&&和||一起出现,从左往右依次看,按照以上原则

-------------------------------------------------------------------------

二、流程控制语句

1.基本语法结构

F:false 假

T:true 真

if [ condition ];thencommandcommand
fi[ 条件 ] && command
if [ condition ];thencommand1elsecommand2
fi[ 条件 ] && command1 || command2
if [ condition1 ];thencommand1  结束elif [condition2 ];thencommand2  结束else command3
fi
注释:如果条件1满足,执行命令1结束;如果条件1不满足,再看条件2,如果条件2满足执行命令2后结束;如果条件1和条件2都不满足执行命令3结束。

http://www.xdnf.cn/news/18432.html

相关文章:

  • 企业设备系统选型:功能适配度分析
  • Vue 插槽(Slots)全解析1
  • B树,B+树,B*树
  • 文件包含的学习笔记
  • 嵌入式Linux学习 -- 网络1
  • 深度学习——神经网络
  • canvas绘制图片等比缩放
  • Vue2+Vue3前端开发_Day6
  • Linux笔记8——shell编程基础-2
  • 网络实践——Socket编程UDP
  • 视频拼接融合技术:打造全景视界的革命性产品
  • API模型与接口弃用指南:历史、替代方案及开发者应对策略
  • `git mv` 重命名 Git 仓库中的文件夹
  • 多人编程新方式:cpolar 让 OpenHands 远程开发更轻松
  • 20250822在Ubuntu24.04.2下指定以太网卡的IP地址
  • 数据分析专栏记录之 -基础数学与统计知识 2 概率论基础与python
  • 安全帽检测算法如何提升工地安全管理效率
  • 【C++组件】Elasticsearch 安装及使用
  • Seaborn数据可视化实战:Seaborn时间序列可视化入门
  • Logstash_Input插件
  • 偶现型Bug处理方法---用系统方法对抗随机性
  • (附源码)基于SSM的餐饮企业食材采购管理系统的设计与实现
  • 攻防世界—bug
  • 以下是基于图论的归一化切割(Normalized Cut)图像分割工具的完整实现,结合Tkinter界面设计及Python代码示
  • 基于SpringBoot的考研学习交流平台【2026最新】
  • 十年磨一剑!Apache Hive 性能优化演进全史(2013 - )
  • 哈希和字符串哈希
  • 电子基石:硬件工程师的器件手册 (十三) - 电源管理IC:能量供给的艺术
  • Leetcode—1683. 无效的推文【简单】
  • Unity设置UI显示区域