在shell中,=
和==
运算符都可以用于判断两个字符串、两个字符串变量是否相同,==
支持模式匹配,而=
不支持模式匹配。
使用 -eq
来判断两个整数是否相等。
# 字符串比较
# 给变量赋值时,等号前后没有空格,有空格时是条件判断
string1=abc
string2=bcd
# [ "$string1" = "$string2" ]内的空格是必须的!!
if [ "$string1" = "$string2" ]; then
echo "The strings are equal"
fi
#整数比较
num1=123
num3=123
# 注意中括号内的空格!!
if [ "$num1" -eq "$num2" ]; then
echo "The numbers are equal"
fi
在 shell 脚本中,[
和 [[
都可以用于条件测试。
[
是一个标准的 Unix 命令,也被称为 test。它在所有 POSIX shell 中都可用,包括 sh、bash、ksh、dash 等。
[[
是 bash 和其他一些现代 shell(如 zsh 和 ksh)中的关键字,提供了比 [
更强大的功能。例如,它支持字符串模式匹配和正则表达式匹配
在[
和 [[
中,进行条件判断时,是使用=
还是==
呢?
对于[
,一般使用=
进行条件判断,==
不是一个标准的运算符,但是在某些shell(比如bash)中,在[
使用==
是可以的。对于[[
,==
和=
都可以在[[
用于字符串比较, -eq
用于整数比较。
他们之间的对应关系: =
用在[
中; ==
用在[[
中。这样用是不会出错的。
[
的用例:
if [ "$variable" = "value" ]; then
echo "The variable equals the value"
fi
[[
的用例:
# 支持通配符匹配
if [[ "$variable" == value* ]]; then
echo "The variable starts with 'value'"
fi
# 支持正则表达式匹配
if [[ "$variable" =~ ^value ]]; then
echo "The variable starts with 'value'"
fi
总结起来就是,[]
支持的shell类型更多,兼容性更好,而[[]]
的功能更强大。