Bash中如何表示小于且不等于?条件判断语句语法报错求助
在Bash中实现“小于且不等于”的条件判断
你写的代码报错,是因为Bash的test命令(也就是[ ... ]语法)里,逻辑条件的写法不符合规则——不能把-lt 3和-ne 1直接连在一起,每个比较操作都得是独立完整的条件,再用逻辑运算符把它们连接起来。
下面给你两种正确的写法:
方法1:使用test命令原生的逻辑与运算符-a
这是[命令本身支持的逻辑连接方式:
if [ $value -lt 3 -a $value -ne 1 ]; then # 在这里编写你要执行的代码 echo "value小于3且不等于1" fi
方法2:使用Bash的逻辑与运算符&&(更推荐)
这种写法可读性更强,也是现代Bash脚本里更常用的方式:
if [ $value -lt 3 ] && [ $value -ne 1 ]; then # 在这里编写你要执行的代码 echo "value小于3且不等于1" fi
额外提个小建议:为了避免变量为空时出现语法错误,最好给变量加上双引号,比如:
if [ "$value" -lt 3 ] && [ "$value" -ne 1 ]; then # 执行代码 fi
简单梳理下关键点:
-lt是用于整数比较的“小于(less than)”运算符-ne是用于整数比较的“不等于(not equal)”运算符- 不管用哪种逻辑连接方式,都要保证每个比较条件是完整的——每个条件都得有左边的变量、运算符和右边的值,不能像你原来那样省略重复的变量。
内容的提问来源于stack exchange,提问作者Zek6693
相关产品推荐
相关产品推荐

