-6

我有一个bash包含如下行的脚本:

echo 2 * 3 > 5 is a valid inequality

我试图理解为什么在echo发送到屏幕后我没有得到输出。

相反,没有任何内容输出到屏幕上,并且有一个新文件,其名称为5,包含2、我当前目录中所有文件的名称以及字符串3 is a valid inequality

为什么会这样?有人可以解释吗?顺便说一句,我在 Linux 系统中运行它。

4

2 回答 2

3

>正在重定向标准输出。

扩展为所有(*非隐藏)文件名

阅读高级 bash 脚本指南

于 2013-07-29T04:41:47.787 回答
3

shell首先处理输入/输出重定向> 5,并将相关的文件句柄附加到它打开的文件(5在这种情况下)。

它还扩展*到当前目录中的匹配文件。所以你最终得到的是:

echo 2 <<ALL YOUR FILES>> is a valid inequality

将输出发送到您之前打开的文件的位置。

如果要输出文字字符串,则需要告诉 shell 不要进行正常解释:

echo '2 * 3 > 5 is a valid inequality'
于 2013-07-29T04:44:14.643 回答