shell判断使用的括号区别
标签: shell判断使用的括号区别 博客 51CTO博客
2023-06-19 18:24:24 206浏览
1,双小括号不能用关键字运算符比较,比如以下
-gt,-ge,-lt,-le,-eq,-ne,只能使用符号比较,比如== >= >等等。
#!/bin/bash
if (( "$1" -gt "0" ))
then
echo "ok"
else
echo "not"
fi
看下运行结果
我们使用符号比较
#!/bin/bash
if (( "$1" > "0" ))
then
echo "ok"
else
echo "not"
fi
看下运行结果
我们再来看个代码
#!/bin/bash
if (( "$1" == "ss" ))
then
echo "ok"
else
echo "not"
fi
看下运行结果
结果明显是不准确也是不对的
再来看个代码
#!/bin/bash
if (( "$1" >= "ss" ))
then
echo "ok"
else
echo "not"
fi
再来看下结果
也是不准确和不对的
由此可见,双圆括号,适用于数字比较判断,并不适用于字符串比较判断,会判断失误
2,单中括号和双中括号基本类似,推荐使用双中括号,单中括号会有问题
看代码
#!/bin/bash
if [ "$1" >= "ss" ]
then
echo "ok"
else
echo "not"
fi
看结果
单中括号不支持>= 因为这是个bash的特性决定的
我们看下双中括号
#!/bin/bash
if [[ "$1" >= "ss" ]]
then
echo "ok"
else
echo "not"
fi
看结果
一样不支持
看代码
#!/bin/bash
if [ "$1" == "ss" ]
then
echo "ok"
else
echo "not"
fi
看结果
结果准确
看代码,双
#!/bin/bash
if [[ "$1" == "ss" ]]
then
echo "ok"
else
echo "not"
fi
看结果
结果准确
我们使用数字来测试下
#!/bin/bash
if [ "$1" == "0" ]
then
echo "ok"
else
echo "not"
fi
看代码
准确识别
双括号代码
#!/bin/bash
if [[ "$1" == "0" ]]
then
echo "ok"
else
echo "not"
fi
看结果
准确识别
我们使用关键字判断符号来测试,就是-eq ,-ne这些
#!/bin/bash
if [ "$1" -eq "0" ]
then
echo "ok"
else
echo "not"
fi
看结果
会抛出异常
看下双括号
#!/bin/bash
if [[ "$1" -eq "0" ]]
then
echo "ok"
else
echo "not"
fi
看结果
判断严重错误
看下 -ne
#!/bin/bash
if [ "$1" -ne "0" ]
then
echo "ok"
else
echo "not"
fi
看结果
有错误抛出
看下双中括号
#!/bin/bash
if [[ "$1" -ne "0" ]]
then
echo "ok"
else
echo "not"
fi
看下结果
结果不准确
看下-gt
#!/bin/bash
if [ "$1" -gt "0" ]
then
echo "ok"
else
echo "not"
fi
看结果
一样会抛异常
看双括号
#!/bin/bash
if [[ "$1" -gt "0" ]]
then
echo "ok"
else
echo "not"
fi
看结果
由此可见,在单双中括号情况下,字符串使用-eq和-ne 关键字运算符比较时候,字符串永远是等于0的,这点需要注意,所以比较纯数字大小时候,推荐使用双圆括号,不推荐使用双中括号,会出现比较失误,或者我们使用 == 和!=也可以。
#!/bin/bash
if (( "$1" == "ss" ))
then
echo "ok"
else
echo "not"
fi
看结果

严重错误,双圆括号不适用于字符串比较
使用单中括号
#!/bin/bash
if [ "$1" == "ss" ]
then
echo "ok"
else
echo "not"
fi
看结果
精准识别
看双中括号
#!/bin/bash
if [[ "$1" == "ss" ]]
then
echo "ok"
else
echo "not"
fi
看结果
精准识别
好习惯就是,字符串比较使用单或者双中括号,双中括号可以使用正则,不使用关键字-eq -ne 等来比较字符串,并且字符串都只可以用=或者==,!=来判断,没有>=或者<=这一说。
数字比较使用双圆括号,或者使用中括号时候使用双中和单中时候,使用关键子来比较就是-eq -ne这些,避免使用= !=这些来比较
双圆括号和单中括号都可以用来做运算
两者是等价的
变量一定要用双引号引起来,防止出错
字符串比较用单或双中括号,并且用=或者==或者!=,不支持-eq这类关键字
数字比较支持双圆括号,在使用双圆括号情况下支持,==,!=,>=,<=,>,<,不支持=
数字使用单或者双中括号情况下支持==,=,!=,-eq,-ne,-gt, -ge, -lt, -le不支持>=和<=,双中括号还支持>和<,单中括号不支持,但是无论单双中括号不要用>和<来比较虽然不会报错,但是比较结果不准确
使用单或双中括号来比较数字时候尽量不使用,-eq,-ne,-gt等这些关键词,因为如果比较结果是字符串的话,shell会报错
单中括号的报错
双中括号的报错
好博客就要一起分享哦!分享海报
此处可发布评论
评论(0)展开评论
展开评论





