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

Shell 学习之 if 命令

1. 执行流程

Shell 脚本中,if 是一个 控制流语句,用于进行条件判断,根据条件的结果执行相应的操作。

# 首先,Shell 会检查表达式 condition 返回的 boolean 值。
# 如果 condition 的值为真,则执行 then 代码块;
# 如果 condition 的值为假,则执行 else 代码块。 
# if 语句结束。结束后, Shell 继续执行后面的代码。if [ condition ];
then  # 执行条件为真时需要执行的代码块  
else  # 执行条件为假时需要执行的代码块  
fi

2. 条件判断

if 语句中,condition 是一个条件判断表达式,返回值为 布尔值(0:false 1:true)

  • 在条件判断语句中,[ "$str" = "Hello" ] 中的空格是必需的。这是因为在 Shell 中,= 两侧的空格用于分隔运算符和操作数。缺少空格 可能 导致语法错误或错误的结果。
  • 进行字符串判断时,必须使用双引号将参数括起来(例如:"a b",如果没有双引号解析是否存在问题?)。这是因为在 Shell 中,如果使用双引号 Shell 会将参数解释为字符串,如果不使用双引号 Shell 会将变量解释为命令输出,这样会导致判断结果失败或者错误。
2.1. 文件
场景表达式备注
文件存在-e-e /path/to/file
文件存在且类型为文件-f-f /path/to/file1.txt
文件存在且类型为文件夹-d-d /path/to/dir
2.2. 字符串
场景表达式备注
字符串为空-z-z "$string"
字符串不为空-n-n "$string"
字符串相等="$str1" = "$str2"
字符串不相等!="$str1" != "$str2"
2.3. 数字
场景表达式备注
等于-eq$num1 -eq $num2
不等于-ne$num1 -ne $num2
大于-gt$num1 -gt $num2
小于-lt$num1 -lt $num2
大于等于-ge$num1 -ge $num2
小于等于-le$num1 -le $num2
2.4. 逻辑符号
场景表达式示例备注
-a"$str1" = "A" -a "$str2" = "B"两个都为真则为真
-o"$str1" = "A" -o "$str2" = "B"两个都为假则为假
!! -f file1.txt文件 file1.txt 不存在则为真
http://www.lryc.cn/news/212795.html

相关文章:

  • android 同步 服务器 时间
  • 10、电路综合-基于简化实频的宽带匹配电路设计方法
  • N-130基于springboot,vue校园社团管理系统
  • Syntax Error: TypeError: this.getOptions is not a function的解决(Vue)
  • 使用 kube-downscaler 降低Kubernetes集群成本
  • LeetCode热题100——哈希表
  • Kubeadm
  • 【Overload游戏引擎细节分析】PBR材质Shader---完结篇
  • C++设计模式_18_State 状态模式
  • 详解final, abstract, interface关键字
  • 统计特殊四元组
  • 腾讯云轻量应用服务器“镜像”怎么选择合适?
  • Ruby模块和程序组织
  • 14、SpringCloud -- WebSocket 实时通知用户
  • 智能井盖传感器推荐,万宾科技助力城市信息化建设
  • 3D模型格式转换工具HOOPS Exchange对工业级3D产品HOOPS的支持与应用
  • table 表体滚动, 表头、表尾固定
  • 第57篇-某钩招聘网站加密参数分析【2023-10-31】
  • C语言数据结构之数据结构入门
  • 如何知道服务器的某个端口是否打开
  • 【ICCV‘23】One-shot Implicit Animatable Avatars with Model-based Priors
  • 关于息肉检测和识别项目的总结
  • Jetson Xavier NX FFmpeg支持硬件编解码
  • 518抽奖软件,为什么说比别的抽奖软件更美观精美?
  • React的组件学习
  • uni-app配置微信开发者工具
  • 肺癌不再是老年病:33岁作家的离世引发关注,有这些情况的请注意
  • 【兔子王赠书第4期】用ChatGPT轻松玩转机器学习与深度学习
  • Ubuntu18.04 ROS Melodic的cv_bridge指向问题(四种方式,包括opencv4)(转载)
  • Android任务栈和启动模式