Shell中if的使用详解_&&与||的使用详解

掌握Shell编程中的&&和||逻辑控制 本文详细解读了在Shell编程中使用的&&和||两种逻辑控制结构,通过实际案例展示了它们如何基于前一个命令的成功或失败来执行后续命令。文章还探讨了如何在if语句中结合使用这些控制结构,以及如何在for、while和until循环中应用它们,从而增强程序的决策能力和执行效率。 阅读详情
AI摘要

本文详细介绍了shell脚本中的IF语句的各种结构及其使用场景,包括单分支、双分支和多分支结构,并解释了如何使用条件表达式进行字符串、数字及文件的判断。此外,还探讨了复杂逻辑判断的实现方式以及&&和||逻辑运算符的使用。

一 IF使用详解

1 格式
1.1 单分支语句结构
if [ 条件表达式 ]; then
    指令 
fi
1.2 双分支语句结构
if [ 条件表达式 ]; then 
    指令一 
else 
    指令二 
fi
1.3 多分支语句结构
if [ -f file ]; then
   echo "yes yes yes"
elif [ -z file ]; then
   echo "yes yes"
else
   echo "nonono"
fi

上面直接给出了多分支if语句的一个实例。从上面三个结构中可以看出,条件表达式的左右都要有空格。

2 条件表达式的内容
2.1 字符串的判断
str1 = str2      当两个串有相同内容、长度时为真 
str1 != str2      当串str1和str2不等时为真 
-n str1        当串的长度大于0时为真(串非空) 
-z str1        当串的长度为0时为真(空串) 
str1           当串str1为非空时为真
2.2 数字的判断
int1 -eq int2    两数相等为真 
int1 -ne int2    两数不等为真 
int1 -gt int2    int1大于int2为真 
int1 -ge int2    int1大于等于int2为真 
int1 -lt int2    int1小于int2为真 
int1 -le int2    int1小于等于int2为真
2.3 文件的判断
-r file     用户可读为真 
-w file     用户可写为真 
-x file     用户可执行为真 
-f file     文件为正规文件为真 
-d file     文件为目录为真 
-c file     文件为字符特殊文件为真 
-b file     文件为块特殊文件为真 
-s file     文件大小非0时为真 
-t file     当文件描述符(默认为1)指定的设备为终端时为真
2.4 复杂逻辑判断

条件表达式中可能有多个条件,需要使用与或非等逻辑操作。

-a         与 
-o        或 
!        非
2.5 一个实例
if [ $score -ge 0 ]&&[ $score -lt 60 ];then
        echo "sorry,you are lost!"
elif [ $score -ge 60 ]&&[ $score -lt 85 ];then
        echo "just soso!"
elif [ $score -le 100 ]&&[ $score -ge 85 ];then
        echo "good job!"
else
        echo "input score is wrong , the range is [0-100]!"
fi

当然,上面的实例也可以用 -a 来改写:

if [ $score -ge 0 -a $score -lt 60 ];then
        echo "sorry,you are lost!"
elif [ $score -ge 60 -a $score -lt 85 ];then
        echo "just soso!"
elif [ $score -le 100 -a $score -ge 85 ];then
        echo "good job!"
else
        echo "input score is wrong , the range is [0-100]!"
fi

二 &&与||的使用

有时候,我们可以直接使用&&和||的组合来代替if表达式。

2.1 &&运算符
command1  && command2
  • 命令之间使用 && 连接,实现逻辑与的功能。
  • 只有在 && 左边的命令返回真,&& 右边的命令才会被执行。
  • 只要有一个命令返回假(命令返回值 $? == 1),后面的命令就不会被执行。
2.2 ||运算符
command1 || command2
  • 命令之间使用 || 连接,实现逻辑或的功能。
  • 只有在 || 左边的命令返回假,|| 右边的命令才会被执行。
  • 只要有一个命令返回真,后面的命令就不会被执行。

比如在ARM的uboot的mkconfig文件中的如下语句:

[ "${BOARD_NAME}" ] || BOARD_NAME="$1"

这条语句的意思是如果BOARD_NAME这个变量是空的话(即前半部分条件判断返回为假),执行后边的赋值语句。

【UE5】Vosk插件实战:离线语音识别与TTS朗读全流程解析 本文详细解析了如何在UE5中利用Vosk插件实现离线实时语音转文字功能。从环境配置、插件与模型准备,到核心C++组件封装与蓝图系统搭建,提供了完整的实战教程。重点解决了离线语音识别在游戏开发中的延迟、隐私和网络依赖问题,并演示了从语音识别到TTS朗读的完整交互闭环,为开发安全、实时的语音交互应用提供可靠方案。 阅读详情

相关推荐

OpenHarmony自定义Launcher

OpenHarmony源码版本:4.0release开发板:DAYU / rk3568DevEco Studio版本:4.0.0.600切换分支为OpenHarmony-4.0-Release,并下载源码。

Abner_Crazy的博客 1630

shell if 多条件判断语法怎么用?详解-a/-o与&&/||区别

在Shell脚本编写中,if语句的多条件判断是提高脚本逻辑严密性的关键。掌握多种条件组合方式,能让脚本应对更复杂的实际情况,避免因单一条件判断不足导致的逻辑漏洞。

2509_93883384的博客 353

别再用UE5默认材质:用Substance Painter一招提升写实感

今天,我就把这套从模型准备到引擎最终呈现的全流程技巧毫无保留地分享出来,这套方法不仅能让你的作品细节炸裂,更能让你理解次世代PBR(Physically Based Rendering)材质的底层逻辑。

海外旅居设计师,15年设计经验。 1324

Shell中的if语句中的&&

#!/bin/bash for((i=0;i<5;i++)) do if [ $i -ne 3 && $i -ne 5 ]; then echo yes333 fi done 会报出错误: 纠正: #!/bin/bash for((i=0;i<5;i++)) do if [[ $i -ne 3 && $i -n...

乔治大哥的博客 6017

MOLDFLOW 2012模流分析基础到实战视频教程

├ 1第一讲MF软件安装与界面定制及模流前期准备工作及分析流程介绍 ├ 2第二讲MF建模工具条命令讲解与图层的运用 ├ 3第三讲MF网格类型与适应范围及网格划分、诊断、修复与统计 ├ 4第四讲MF中CAD doctor 模块对导入模型的修复方法与实例 ├ 5第五讲MF中常见各种流道浇口及水路的建模方法与外部导入方法上 ├ 6第六讲MF产品模型导入CAD DOCTOR与修复 ├ 7第七讲MF分析序列设定与网格的划分与诊断及修复 ├ 8第八讲MF材料选择与成型工艺参数设定 ├ 9第九讲MF创建浇注系统:主流道、

QQ_1987083845的博客 2543

Qt —— 在Win11下“Qt for Android“开发环境,通过USB在真机(华为Meta60 PRO)上调试运行,并打包APK并在真实手机运行

Qt —— 在Win11下“Qt for Android“开发环境,打包APK并在真实手机运行

311

Shell if的使用详解_&&与||的使用详解

一 IF使用详解 1 格式 1.1 单分支语句结构 if [ 条件表达式 ]; then 指令 fi 1.2 双分支语句结构 if [ 条件表达式 ]; then 指令一 else 指令二 fi 1.3 多分支语句结构 if [ -f file ]; then echo "yes yes yes" elif [ -z file ]; then echo "yes yes" else echo "nonono" fi 上面直接给出了多分

小楼一夜听春雨,深巷明朝卖杏花 3030

HSM 网络安全 信息安全

HSM HSM信息安全功能 汽车电子网络安全中HSM 的应用场景 选择适合汽车电子网络安全的 HSM 符合汽车安全标准和法规要求的HSM HSM 在汽车电子网络安全中的可靠性和安全性 评估汽车电子网络的安全性 汽车 HSM(Hardware Security Module)模块开发 汽车 HSM(Hardware Security Module)模块测试

天赐好车的博客 1237

shell脚本&条件表达式&if条件语句&case条件结构语句

和。

GKF0206的博客 2335

openclaw 保姆级部署与核心玩法解析:国产DeepSeek模型 + 飞书

OpenClaw是一款功能强大的开源AI个人助理,支持全平台私有化部署,数据完全本地掌控。它不仅可通过聊天窗口直接操控电脑(安装软件、创建项目),还支持接入飞书等主流通讯工具,化身24小时在线的智能助理。本文提供了从零开始的详细部署教程,涵盖基础安装、模型配置(如GLM-4、DeepSeek)到飞书集成的完整实战指南,助你将这款“核动力”AI助手快速融入日常工作流。

甘蓝的专栏 2998

yolov5运行detect.py之后卡住了?没后续,没结果,没报错,怎么办?如何解决?

🏆 本文收录于《全栈Bug调优(实战版)》专栏,致力于分享我在项目实战过程中遇到的各类Bug及其原因,并提供切实有效的解决方案。无论你是初学者还是经验丰富的开发者,本文将为你指引出一条更高效的Bug修复之路,助你早日登顶,迈向财富自由的梦想🚀!同时,欢迎大家关注、收藏、订阅本专栏,更多精彩内容正在持续更新中。让我们一起进步,Up!Up!Up!    备注: 部分问题/难题源自互联网,经过精心筛选和整理,结合数位十多年大厂实战经验资深大佬经验总结所得,数条可行方案供所需之人参考。

**My Coding Family** 1104

shell 语言中的 if 条件判断

文章目录1、if 的基本语法:2、字符串的判断3、数值的判断4、文件和目录的判断5、复杂逻辑判断示例1:`与` 的使用示例2:`或` 的使用5、举例6、条件变量替换: 1、if 的基本语法: if [ command ];then 符合该条件执行的语句 elif [ command ];then 符合该条件执行的语句 else 符合该条件执行的语句 fi 2、字符串的判断 字符串批较时,变量一定要用 双引号。 [ -z "str" ] 如果str的长度为零,则为真 ,即判断是否为空,空即

猎人在吃肉 6万+

ubuntu22.04下对使用linuxdeployqt发布的qt程序进行deb打包操作

【代码】ubuntu22.04下对使用linuxdeployqt发布的qt程序进行deb打包操作。

十三阿哥的博客 1402

Shell脚本之——条件语句if详解

if详解

zcien的博客 4万+

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

shell编程 if else

文章目录exit0 exit1 的区别if else的用法if else的简化版本条件表示式linux中.sh文件是什么参考链接 exit0 exit1 的区别 exit(0):正常运行程序并退出程序; exit(1):非正常运行导致退出程序; exit 0 可以告知你的程序的使用者:你的程序是正常结束的。如果 exit 非 0 值,那么你的程序的使用者通常会认为你的程序产生了一个错误。 在 sh...

Be busy living or busy dying 355

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Shell 里 ; && || 运算符介绍

【代码】Shell 里;&& || 运算符介绍。

张紫娃的博客 1308

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

shell编程——if语句(if -z -n -f -x -eq -ne -lt -a -o)

shell流程控制与其他语言有一点不同就是它的流程控制不可为空,即else分支没有语句执行,就不要写这个else。本文介绍if语法使用方法、特殊文本表达式-z -n -f -eq -ne -lt等及shell的逻辑表达式用法。 1.if语法 条件表达式一定要有fi结尾!!! if语法格式 命令执行成功,返回0 (比如grep ,找到匹配) 执行失败,返回非0 (grep,没找到匹配) if语...

tomorrownan的博客 3万+

警惕 Shell 脚本中的逻辑陷阱:&&|| 替代 if-else 引发的安全漏洞

&||短路组合逻辑不等价于if-else:前者受中间命令执行状态影响,后者仅由条件表达式决定分支;Shell 脚本的简洁性需以安全性为前提,看似微小的语法选择,可能成为系统安全的重大隐患。遵循结构化编程规范,才能从根源上规避此类逻辑陷阱。

vortex5的博客 790

shell脚本 if的使用和判断条件

目录 IF使用基础 单分支语句结构 双分支语句结构  多分支语句结构 条件表达式 文件表达式 数字表达式 字符串表达式 &amp;&amp;  ||使用 test与[  ] [  ]  与[[  ]] IF使用基础 单分支语句结构 if [ 条件表达式 ]; then 指令 fi 双分支语句结构 if [ 条件表达式 ]; then 指令一 el...

今天吃了吗的博客 5万+

shell && 和 || 的短路使用

shell && 和 || 的短路使用 && 和 || 在 shell 中分别表示 and 和  or,和其它语言类似,这两个操作有短路效应。也就是说,当判断式已经确定时,不再继续处理后续表达式。 && 在失败时中断, || 在成功时中断。 简单的短路经常可以在一些网上的脚本里面看到。 如: a=1 [ a -eq 2 ] && ec...

weixin_30563319的博客 542

Shell 语法——if else 详解

一、语法格式 shell 中的 if 语句的格式如下: if 条件; then command1 else command2 fi 或者将 then 单独另起一行也可以,这时条件后面的 ; 便可以去掉: if 条件 then command1 else command2 fi google 规范推荐使用第一种,即:将 ; do , ; then 和 while , for , ...

HappyRocking的专栏 4万+

Shell 中的真与假

与 C 语言中有所不同。

lyndon 2万+

Linux 中shell 脚本if判断多个条件

Linux 中shell 脚本if判断多个条件格式如下,在比较时,数字和字符串用不同的比较符号 1.如果a&gt;b且a&lt;c    if (( a &gt; b )) &amp;&amp; (( a &lt; c ))      或者    if [[ $a &gt; $b ]] &amp;&amp; [[ $a &lt; $c ]]     或者          if [ $a -gt ...

一路奔跑94的博客 24万+

云计算—shell编程之 if 语句,单分支,多分支,逻辑与&&和逻辑或 ||

接上一篇,if…else…fi 语句 此语句允许脚本在命令成功或失败的基础 上做出选择。 也就是 根据 条件的不同结果,可以采取不同的行为 我们来完善一下上一个脚本: #!/bin/bash #================================= # # FILE:checkpasswd.sh # AUTHOR:Xie_qi_chao # ...

解启超 822

linux shell if &&,**shell中if语句的使用&&逻辑判断**

shell中if语句的使用&&逻辑判断转自:https://blog.51cto.com/lovelace/1211353< 希望对你有所帮助 >bash中如何实现条件判断?条件测试类型:整数测试字符测试文件测试一、条件测试的表达式:[ expression ] 括号两端必须要有空格[[ expression ]] 括号两端必须要有空格test expression组合...

weixin_36410567的博客 2526
上一篇: 示波器的两个最重要参数-带宽和采样速率
下一篇: uboot配置过程详解
隋边边
博客等级 码龄11年 304粉丝 91原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值