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

shell脚本之条件语句

条件语句

linux测试

test 测试

测试表达式是否成立(用echo $? 检测是否正确)

语法:test [选项] [文件名]

选项作用
-e测试文件是否存在
-r查看文件有无读的权限
-d测试是否为目录
-f测试是否为文件
-w测试当前用户有无写的权限
-x测试是否有执行权限
-L测试是否为软连接

比较整数数值

语法:[整数1 操作符 整数2 ]

常用操作符

-eq: 等于(Equal)

-ne: 不等于(Not Equal)

-gt: 大于(Greater Than)

-lt: 小于(Lesser Than)

-le: 小于或等于(Lesser or Equal)

-ge: 大于或等于(Greater or Equal)

字符串比较

语法:

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

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

= :等于

!= :不等于(取反)

-z :字符串内容为空

逻辑测试(短路运算)

短路与:&&

全真才为真,一假即为假

短路或:||

一真即为真,全假才为假

建议&&放在||前面执行

逻辑否: !

取反

格式:cmd1 && cmd2 ||cmd3

[   ]  和   [[   ]]

[    ]

[[     ]]   加强版的单个[   ],可以支持正则表达式和通配符

[ -a ] :且

[ -o ] :或

[[ == ]]:等于号右边通配符

[[ =~ ]]:等于号右边是正则表达式

( )、{ }区别

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

( ):会开启子shell

  { }:不会开启子shell,在当前环境下运行

awk

是一种文本处理工具,它可以用于从文件或标准输入中提取和操作数据。它以行为单位读取输入,并根据指定的规则进行处理

if语句的结构

单分支

语法:

#!/bin/bash
if [ 5 -gt 4 ]    #如果5大于4
then
touch hyh         #如果5大于4,则创建hyh文件
fi

双分支

必须if开头,fi结尾

if  
#判断条件
then 
#命令语句
else 
#命令语句(如果第二条不能满足)则执行
fi
​

多分支(满足条件直接执行命令,如果不满足往下继续判断条件)

if  判断条件1
then
#命令序列(需要执行的操作)
elif判断条件2
then(需要执行的操作)
elif判断条件3
then
…………(依次类推,可设置多个条件)
fi

实验示例:

case语句架构

case支持通配符

*:任意长度任意字符

<<任意字符:定位符,写完尾部也要加,并且不能加空格

case的语法格式

case   关键字   in
​
条件判断1)
​
命令序列1 
​
;;
​
条件判断2)
​
命令序列2)
​
;;
​
…………
​
…………
​
*)
​
默认命令序列*
​
;;
​
esac

#!/bin/bsah
read -p "请输入你的分数:"  num
case $num  in
100)
echo "满昏"
;;
8[0-9]|9[0-9])
echo "不错"
;;
[1-9]|[1-7][0-9]
echo "还需努力"
;;
0)
echo "天才,神中神"
;;
*)
echo "输入有误,重新输入"
bash $0
;;
esac
​


http://www.kler.cn/a/137516.html

相关文章:

  • 什么是cline?
  • Django学习笔记之数据库(一)
  • Qt 界面外观
  • 【Web】0基础学Web—事件对象、事件委托(事件代理)——星级评论案例
  • LabVIEW调用不定长数组 DLL数组
  • 鸿蒙开发(29)弹性布局 (Flex)
  • 鸿蒙系统扫盲(二):再谈鸿蒙是不是安卓套壳?
  • 全志XR806基于http的无线ota功能实验
  • 开发知识点-uniapp微信小程序-开发指南
  • 阿里云3M固定带宽服务器速度快吗?是否够用?
  • 本地私域线上线下 线上和线下的小程序
  • spring面试题合集介绍
  • vivado产生报告阅读分析14-时序报告10
  • RedisConnectionFactory is required已解决!!!!
  • 机器学习第7天:逻辑回归
  • JVM对象创建与内存分配
  • 【漏洞复现】IP-guard WebServer 存在远程命令执行漏洞
  • MySQL InnoDB 引擎底层解析(一)
  • 数据库-索引
  • 传输层协议-TCP协议
  • 键盘快捷键工具Keyboard Maestro mac中文版介绍
  • 【JVM】JVM异常不打印堆栈信息 [ -XX:-OmitStackTraceInFastThrow ]
  • 第十一章 目标检测中的NMS
  • RT-DETR优化策略:轻量级Backbone改进 | 高效模型 (Efficient MOdel, EMO),现代倒残差移动模块设计|ICCV2023
  • 【图像分类】【深度学习】【轻量级网络】【Pytorch版本】MobileNets_V2模型算法详解
  • No appropriate protocol -- Mysql