为什么这个unix shell代码会像这样工作?

时间:2013-07-29 04:40:44

标签: linux bash unix

我有一个bash脚本,其中包含如下所示的行:

echo 2 * 3 > 5 is a valid inequality

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

相反, nothing 输出到屏幕,并且有一个新文件,名称为5,包含2,当前所有文件的名称目录和字符串3 is a valid inequality

为什么会这样?谁能解释一下?顺便说一下,我在Linux系统中运行它。

2 个答案:

答案 0 :(得分:3)

>正在重定向标准输出。

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

阅读advanced bash scripting guide

答案 1 :(得分:3)

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

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

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

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

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

echo '2 * 3 > 5 is a valid inequality'