因为[[…]]是一个内建运算符,虽然不是所有的shell都支持,所以有些原本的运算符都不具有原来的意义。比如>表示大于而不是重定向,=的意义是==表示”模式匹配“等等。 另外,bash里并不像在大多数计算机语言里一样,bash里字符串是不一定需要加引号的,只有包含空格的字符串才需要加(因为空格表示分隔符)。而且bash里默认是字符串。于是if [[ ''=1 ]] 的意思是if [[ 非空字符串 ]],所以就是 if 1 了 $ if [[ '1' == 1 ]] ; then echo "true"; else echo "false"; fi true $ if [[ ''=1 ]] ; then echo "true"; else echo "false"; fi true $ if [[ '' = 1 ]] ; then echo "true"; else echo "false"; fi false $ if [[ '' =1 ]] ; then echo "true"; else echo "false"; fi bash: 需要二元条件运算符 bash: `=1' 附近有语法错误 https://www.gnu.org/software/...
因为
[[…]]
是一个内建运算符,虽然不是所有的shell都支持,所以有些原本的运算符都不具有原来的意义。比如>
表示大于而不是重定向,=
的意义是==
表示”模式匹配“等等。另外,bash里并不像在大多数计算机语言里一样,bash里字符串是不一定需要加引号的,只有包含空格的字符串才需要加(因为空格表示分隔符)。而且bash里默认是字符串。于是
if [[ ''=1 ]]
的意思是if [[ 非空字符串 ]]
,所以就是if 1
了https://www.gnu.org/software/...