灵感来自这个问题:
当条件是命令替换时,如果命令不产生输出,if语句应该做什么?
注意:示例是if $(true); then ...,而不是if true ; then ...
例如,给定:
if $(true) ; then echo yes ; else echo no ; fi
Run Code Online (Sandbox Code Playgroud)
我认为$(true)应该用true命令的输出代替,这没什么.它应该等同于:
if "" ; then echo yes ; else echo no ; fi
Run Code Online (Sandbox Code Playgroud)
打印,no因为没有名称为空字符串的命令,或者这样:
if ; then echo yes ; else echo no ; fi
Run Code Online (Sandbox Code Playgroud)
这是一个语法错误.
但实验表明,如果命令不产生输出,则该if语句将其视为true或false,具体取决于命令的状态,而不是其输出.
这是一个演示行为的脚本:
#!/bin/bash
echo -n 'true: ' ; if true ; then echo yes ; else echo …Run Code Online (Sandbox Code Playgroud)