相关疑难解决方法(0)

为什么`if $(true); 然后...... fi`成功了?

灵感来自这个问题:

当条件是命令替换时,如果命令不产生输出,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)

bash ksh zsh sh

22
推荐指数
3
解决办法
6038
查看次数

标签 统计

bash ×1

ksh ×1

sh ×1

zsh ×1