我知道这*
应该由 shell 来解释,而不是由被调用的命令来解释
现在,如果我在主目录中运行以下命令
$echo *
我明白了
Desktop Documents Pictures Downloads ...etc
但如果我在空目录中运行该命令,我会得到
*
作为输出
这是为什么?为什么echo
print *
while*
没有被转义,只能由 shell 解释
输出不应该是空行吗?
答案1
下列回答给出了可能的解释。
我将引用其中一段话:
请注意,如果扩展没有任何结果,即在这种情况下如果目录不包含非隐藏文件,则 * 保持不变并按原样传递给调用的命令。
也就是说,它扩展了通配符 *,但是当它不匹配任何内容时,它将按原样保留并传递给在本例中称为“echo”的命令。