我有一个bash
脚本包含如下行:
echo 2 * 3 > 5 is a valid inequality
我试图理解为什么我没有得到 echo
之后的输出发送到屏幕。
相反,屏幕上没有输出任何内容,并且有一个名为 5
的新文件。 ,包含2
、当前目录中所有文件的名称以及字符串 3 is a valid inequality
.
为什么会发生这种情况?有人可以解释一下吗?顺便说一句,我是在 Linux 系统中运行的。
请您参考如下方法:
shell 首先处理输入/输出重定向,例如 > 5
并将相关文件句柄附加到它打开的文件(在本例中为 5
)。
它还将 *
扩展为当前目录中的匹配文件。所以你最终得到的是:
echo 2 <<ALL YOUR FILES>> is a valid inequality
输出将发送到您之前打开的文件。
如果你想输出文字字符串,你需要告诉 shell 不要进行正常的解释:
echo '2 * 3 > 5 is a valid inequality'