shell 对星号的解释

shell 对星号的解释

我知道这*应该由 shell 来解释,而不是由被调用的命令来解释

现在,如果我在主目录中运行以下命令

$echo *

我明白了

Desktop Documents Pictures Downloads  ...etc

但如果我在空目录中运行该命令,我会得到

*

作为输出

这是为什么?为什么echoprint *while*没有被转义,只能由 shell 解释

输出不应该是空行吗?

答案1

下列回答给出了可能的解释。

我将引用其中一段话:

请注意,如果扩展没有任何结果,即在这种情况下如果目录不包含非隐藏文件,则 * 保持不变并按原样传递给调用的命令。

也就是说,它扩展了通配符 *,但是当它不匹配任何内容时,它将按原样保留并传递给在本例中称为“echo”的命令。

相关内容