为什么在if表达式中应该使用=而不是使用==
code如下
bash
if [ ${currentValue}==A ] then tempValue="$i 123" else tempValue=$i fi
为什么[ ${currentValue} = A ]才是更精准的?
Answers
因为当初 POSIX 标准是这么规定的(你可以
man test
看看)。但实际上大部分实现都支持 == 的。如果你的脚本想要可移植性的话请使用 =。如果你的脚本只支持 bash 的话请使用
[[
关键字以及
==
操作符(
[
是一个也叫作
test
的命令,大部分 shell 都会有内建版本)。
zsh 是推荐在它的
[[
关键字里使用 == 而非 = 的。
PS: SQL 也是用 = 表示相等的。使用 == 表示相等据说是因为 = 被 C 用来表示赋值了,而 C 用 = 表示赋值是因为赋值语句比相等判断语句出现得更多,这样子可以每次赋值时节约一字节内存。