Shell编程中if-elif-else条件分支语句测试

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

测试shell脚本编程时,写了如下代码:

在对if-elif-else分支进行数值判断时, 发现一个奇怪的现象: 如果使用test conditon(即[ condition ])进行判定,当第一条if条件为假时, 无论代码中的elif语句条件是否为真, 都输出elif分支下的语句; 查看输出结果, 发现输出结果显然与期望值不一样

为了能够得到预期结果, 发现如果采用双圆括号是进行判断, 可得到预期结果.

注: 作者Shell运行环境为Ubuntu12.04 - 32bit

#!/bin/bash

main()
{
	echo ----------------------------
	var1=20
	var3=20

	if [ $var1 -gt $var3 ]; then
		echo "va1 great than va3"
	elif [ $va1 -lt $va3 ]; then
		echo "va1 less than va3"
	else
		echo "va1 equal va3"
		echo $var1
	fi
	
	
	if (( $var1 > $var3 )); then
		echo "va1 > va3"
	elif (( $var1 > $var3 )); then
		echo "va1 < va3"
	else
		echo "va1 = va3"
	fi

	return 0
}

main $*


以上代码运行结果为:


Shell条件语句实战:if/case详解与避坑指南 条件判断Shell脚本编程的核心基础,if和case语句作为流程控制的关键结构,直接影响脚本的健壮性和执行效率。从原理上看,Shell条件测试本质是通过test命令或内置语法实现布尔逻辑判断,支持数值比较、字符串匹配、文件检测等七大类测试方法。在自动化运维、CI/CD流水线等场景中,合理的条件判断能显著提升脚本的容错能力和执行性能。本文针对Linux系统管理和DevOps实践,深入解析if/case语句的进阶用法,包含企业级脚本中的条件测试优化、嵌套重构技巧以及20+真实场景示例,特别覆盖文件存在性检查、 阅读详情

相关推荐

Shell语法——if else详解

对比数字,只能使用==、=、!=,或者 -eq、-ne、-gt、-ge、-lt、-le。其中-eq的意思是 equal,-ne是 unequal,-gt是 greater than,-ge是 greater than or equal to,-lt是 less than,-le是 less than or equal to。比较字符串只能使用=、==、、!其中,-n表示字符串为空,即长度大于0,-z表示字符串为空,即长度为0。and可以用-a 或 &&表示,or可以用-o或||表示。

qq_41201304的博客 8810

shell 脚本 if-else判断 和流程控制 (基本语法|基础命令)

shell脚本中的if-else功能对于shell程序员来说是一笔重要的财富。当您需要根据预定义条件执行一组语句时,它是最好的工具。if-else 块即使是条件编程中最重要的部分,也是其中之一。通过调节特定语句的执行,您仅可以提高代码效率,还可以释放处理器可能浪费的宝贵时间,这些时间对于特定情况来说是必要的。

博客之路,前途漫漫 7457

Shell脚本-if else语句

Shell脚本-if else语句

小蜗牛的博客 1万+

shell脚本if elif写法

#!/bin/bash a=100 b=150 if [ $a == $b ] then echo "a==b" elif [ $a -gt $b ] then echo "a > b" elif [ $a -lt $b ] then echo "a < b" else echo "a b not known" fi 输出结果: a < b

reg183的专栏 1万+

Shell中的if、then、elifelse——流程控制语句

流程控制——if 1. 单分支if条件语句 语法: if [ 条件判断式 ];then 程序 fi 或者 if [ 条件判断式 ] then 程序 fi 注意事项: if语句使用fi结尾,和一般语言使用大括号结尾同 [ 条件判断式 ]就是使用test命令判断,所以中括号和条件判断式之间必须有空格。 then后面跟符合条件之后执行的程序,可以放在[]之后,用“;”分割。也可以换行写入,就需要“;”了。 示例1:统计根分区使用率 制作一个脚本,用来统计根分区的使用率。 我们先给出全部的代码,

IChen.的博客 1万+

shell结构化命令if和case

结构化命令允许改变shell脚本的正常执行流程,包括if-then、if-then-else、case等

m0_37607945的博客 228

Shell脚本语法-- if/then/elif/else/fi

和C语言类似,在Shell中用if、then、elifelse、fi这几条命令实现分支控制。这种流程控制语句本质上也是由若干条Shell命令组成的,例如先前讲过的 if [ -f ~/.bashrc ]; then . ~/.bashrc fi 其实是三条命令,if [ -f ~/.bashrc ]是第一条,then . ~/.bashrc是第二条,fi是第三条。如果两条命令...

hd_dream的专栏 3480

Linux学习之Shellif-else

其理解为分界符(delimiter),当然在与系统其他命令冲突的话,可以定义其他分界符,比如。表示后续的输入作为子命令或者子Shell输入,直到命令又遇到。此文章为7月Day 23学习笔记,内容来源于极客时间。输出,上边的输出测试条件是否正确都会输出。之间的语句都是测试条件正确应该执行的,而写在。之间都是测试条件错误应该执行的语句。,再次返回到主调Shell,可将。为所有的用户加上读写执行权限,为所有的用户加上读写执行权限,为所有的用户加上读写执行权限,输入的变量个数等于3。

qq_42108074的博客 2545

shell if/then/elif/else/fi

shell中用if/then/elif/else/fi实现分支控制,本质上是由若干条shell命令组成。 例如 if [ -f ~/.bashrc ]; then . ~/.bashrc fi 如果两条命令需要在同一行写,那么用;隔开,一行只写一个命令则需要用;隔开。 命令与各参数之间需要用空格隔开。 if 后面的子命令,如果该命令的exit status为0则...

舌耳的博客 5859

shell编程之条件与分支语句

1、if条件分支语句 if expr1(条件测试) #如果expr1为真,返回0 then   commands1 elif expr2 then   commands2 ....  ... else   commands fi          #if语句必须以fi终止 下面看一个实例: 1 #! /bin/bash 2 3 if ...

weixin_30376323的博客 204

Shell if else 实战避坑指南:从静默失败到生产可用

Shell 脚本中的 if else 表面简单,实为高危逻辑枢纽——它依赖布尔值,而完全基于命令退出码(0/非0)驱动分支;其健壮性直接受限于空格语法、变量引号、`[ ]` 与 `[[ ]]` 兼容性等底层机制。掌握这些原理,才能规避空值崩溃、跨平台失效、grep 误判等高频故障,在自动化运维、CI/CD 和日志轮转等关键场景中构建可靠判断链。本文聚焦 Shell Script 核心语法陷阱与工程化实践,提供可直接复用的防御式写法、POSIX 兼容方案及真实故障调试路径。

424

shell if

  if 语句语法格式: if condition then command1 command2 ... commandN fi 写成一行(适用于终端命令提示符): if [ $(ps -ef | grep -c "ssh") -gt 1 ]; then echo "true"; fi 末尾的fi就是if倒过来拼写,后面还会遇到类似的。 if e...

波波诸葛伟 1万+

Shell流程控制语句

Shell流程控制语句 目标 1. 掌握shell脚本中for语句使用 2. 掌握shell脚本中while语句使用 流程程控语句 1.1 什么是流程控制语句 说明:可以控制程序执行顺序的语句 1.2 为什么学习流程控制语句 1. 需要判断条件成立则执行指定语句 2. 能快速遍历列表 3. .... 1.2 流程控制语句分类 1. 条件分支控制语句 2. 条件循环控制语句 2. 条件分支控制语句 说明:条件满足则执行语句 条件分支控制语句 分类 1. i...

u012509984的专栏 282

Shell编程if条件判断语句实验总结

test命令是Shell中专门用于标准化条件检测的工具,也是脚本中最常用的条件判定方式,既可以使用test关键字书写,也可以简化为中括号格式,两种写法功能完全一致,但中括号写法更加简洁通用,是日常脚本编写的主流格式,需要重点注意的是中括号与内部条件内容之间必须保留空格,否则脚本会直接报错,这也是初学者最易出现的语法错误。基础的if-then语句是所有条件判断的雏形,语法结构简洁清晰,仅用于单一条件的判定执行,当指定命令执行成功时,即可执行预设操作,无匹配条件时脚本执行任何内容、直接向下运行。

ZiyuZeng的博客 186

04-Shell编程之四

4、流程控制语句和函数 •4.1 条件语句 •简单的shell脚本从头到尾可以执行命令的集合,而条件语句允许用户shell脚本实现当满足条件时执行。 •包括if/then,if/then/elseif/then/elif/then/else,case语句等。 if/then语句语法结构: if <条件>;then <命令1>...

chenmx93的博客 334

Shell脚本if elif语法与MySQL数据库操作实用教程

Shell脚本中结合条件判断与MySQL操作,是自动化运维和数据处理中的常见需求。通过if-elif-else结构,我们可以根据同的条件执行相应的数据库操作

2509_93883384的博客 334

Shell脚本elif用法及与elseif的区别,必看

Shell脚本编程中,条件判断是控制流程的核心。对于许多初学者甚至有一定经验的开发者,elif(注意是elifelseif)的使用虽然基础,但在实际编写健壮、清晰的脚本

2509_93883384的博客 462

编程与数据处理核心:深入理解ifif嵌套的条件分支逻辑

条件分支编程与数据处理中的基础概念,它通过“如果……那么……”的逻辑判断,控制程序或公式的执行路径。其核心原理在于根据特定条件的真假,选择同的代码分支或计算结果,这是实现自动化决策和流程控制的技术基石。掌握条件分支对于编写清晰、可维护的代码至关重要,其技术价值在于构建了从简单判断到复杂业务逻辑的思维框架。在应用场景上,无论是Excel中的`SUMIFS`、`IF`函数进行数据筛选与计算,还是Python、JavaScript等编程语言中的流程控制,都深度依赖条件分支。理解`if`和`if嵌套`,正是掌握

weixin_34326558的博客 492
下一篇: Linux 下virsh挂载时, 无法attach-device disk.xml问题
Sardkit
博客等级 码龄10年 1粉丝 4原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值