为什么如果[false]; 然后回声'确定'; 网络连接; 打印好吗?

Ada*_*der 7 linux bash

为什么当我输入bash时:if [ false ]; then echo 'ok'; fi;我得到ok字符串作为结果?使用变量时我也能得到类似的结果:ok=false; if [ $ok ]; then echo 'ok'; fi;

twa*_*erg 10

if [ false ]相当于if [ -n "false" ]- 它正在测试字符串的长度.如果您正在尝试测试退出代码/bin/false,请使用if false(不[,对于许多但不是全部,现代shell是一个大致相当于/usr/bin/[或者内置的shell /usr/bin/test).