有人可以解释为什么周围==的空间会改变比较结果?下列:
if [[ 1 == 2 ]] ; then echo ok ; fi
Run Code Online (Sandbox Code Playgroud)
什么都不打印,而
if [[ 1==2 ]] ; then echo ok ; fi
Run Code Online (Sandbox Code Playgroud)
版画 ok
che*_*ner 15
"1 == 2"是单个4个字符的字符串,而不是涉及==运算符的表达式.非空字符串在条件表达式的上下文中始终求值为true [[ ... ]].==操作员必须使用空格.
像其他所有内容一样bash,内容[[ ... ]]只是一个以空格分隔的参数列表.该bash语法不知道如何解析条件表达式,但它不知道如何解释的3个参数就像一个列表1,==以及2在上下文[[ ... ]]复合命令.