首页 > 为什么在if表达式中应该使用=而不是使用==

为什么在if表达式中应该使用=而不是使用==

code如下

bashif [ ${currentValue}==A ]
then
    tempValue="$i 123"
else
    tempValue=$i
fi

为什么[ ${currentValue} = A ]才是更精准的?


因为[ ${currentValue} = A ]是bash的标准用法,但bash也不否定==是错误的.可以简单地认为=与==是一样的.所以使用=还是==只是个人习惯问题.
至于为什么要用==而非标准的=,是因为C语言的关系,在C中=是赋值的意思,==是逻辑上的等于,由于linux是C写成的,所以用==比较容易接受


因为当初 POSIX 标准是这么规定的(你可以 man test 看看)。但实际上大部分实现都支持 == 的。如果你的脚本想要可移植性的话请使用 =。如果你的脚本只支持 bash 的话请使用 [[ 关键字以及 == 操作符( [ 是一个也叫作 test 的命令,大部分 shell 都会有内建版本)。

zsh 是推荐在它的 [[ 关键字里使用 == 而非 = 的。

PS: SQL 也是用 = 表示相等的。使用 == 表示相等据说是因为 = 被 C 用来表示赋值了,而 C 用 = 表示赋值是因为赋值语句比相等判断语句出现得更多,这样子可以每次赋值时节约一字节内存。

【热门文章】
【热门文章】