有什么区别:
if echo " T " | grep -q " F "; then echo FOUND; else echo NOT; fi
和:
if ""; then echo FOUND; else echo NOT; fi
第一个命令的输出是:
NOT
第二个命令的输出是:
: command not found
NOT
我认为两者的行为方式应该相同。
答案1
: command not found
这意味着未找到 if 语句中作为条件提供的命令。该命令""
只是一个空字符串,因此找不到;没有这样的命令。
根据 bash 的手册页,if 语句的语法应如下所示:
if list; then list; [ elif list; then list; ] ... [ else list; ] fi
A列表是由运算符 ;、&、&& 或 || 之一分隔的一个或多个管道的序列,并且可以选择以 ;、& 或 之一终止。
因此,在上面的 if 语句中,执行了列表,返回了退出代码 127,并抛出一条错误,表明未找到该命令。然后该值被评估为 false,因此执行 else 块。
您可能想要的是如下内容:
if false; then echo FOUND; else echo NOT; fi