有什么区别:
if echo " T " | grep -q " F "; then echo FOUND; else echo NOT; fi
Run Code Online (Sandbox Code Playgroud)
和:
if ""; then echo FOUND; else echo NOT; fi
Run Code Online (Sandbox Code Playgroud)
第一个命令的输出是:
NOT
Run Code Online (Sandbox Code Playgroud)
第二个命令的输出是:
: command not found
NOT
Run Code Online (Sandbox Code Playgroud)
我认为两者都应该以相同的方式行事。
: command not found
Run Code Online (Sandbox Code Playgroud)
这意味着找不到在 if 语句中作为条件提供的命令。该命令""
只是一个空字符串,因此找不到;没有这样的命令。
根据 bash 的手册页,if 语句的语法应如下所示:
if list; then list; [ elif list; then list; ] ... [ else list; ] fi
Run Code Online (Sandbox Code Playgroud)
甲列表是一个或多个管道的一个序列分开由所述运营商之一;,&&&,或||,并且任选被一个终止;,&或。
因此,在上面的 if 语句中,执行列表并返回 127 的退出代码,并显示未找到命令的错误。然后将其评估为 false,因此执行 else 块。
您可能想要的是以下内容:
if false; then echo FOUND; else echo NOT; fi
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
270 次 |
最近记录: |