Bash中如何实现非零整数比较 !=运算符是否仅适用于字符串
Bash整数不等于比较问题解答
说法正误判定
“!=运算符仅适用于字符串比较”的说法错误,运算符的作用由所处的语法上下文决定,并非固定只能用于字符串比较。
整数不等于比较的常规方式
1. 算术表达式语法(最推荐,和你现有写法兼容)
你之前使用的(( n == 0 ))属于Bash的算术表达式上下文,在这个场景下直接用!=做整数不等于判断即可,写法简单直观:
# 当n为非零整数时,该表达式返回退出码0,可直接用于条件判断 (( n != 0 ))
使用示例:
n=10 if (( n != 0 )); then echo "变量n非零" fi
2. test语法适配写法
如果使用POSIX标准的[ ]或者Bash扩展的[[ ]]条件判断语法,整数不等于比较需要用专门的-ne(not equal缩写)操作符:
# POSIX兼容写法 [ "$n" -ne 0 ] # Bash扩展写法,无需变量引号包裹 [[ $n -ne 0 ]]
误区说明
只有在[ ]、[[ ]]这类test类条件语法中,!=才默认执行字符串比较;在算术上下文(((...))、$((...))、let命令、数组下标等)中,!=就是标准的整数不等于比较运算符。
内容的提问来源于stack exchange,提问作者Dilna
相关产品推荐
相关产品推荐

