2013-07-29 85 views
-6

我有一個包含類似下面的線bash腳本:這個unix shell代碼爲什麼這樣工作?

echo 2 * 3 > 5 is a valid inequality 

我試圖理解爲什麼我沒有得到以下發送到屏幕的echo輸出。

相反,什麼是輸出到屏幕,並有成爲一個新的文件,名爲5,含2,所有文件在我的當前目錄中的名稱和字符串3 is a valid inequality

爲什麼會發生這種情況?有人可以解釋嗎?順便說一下,我正在Linux系統中運行它。

+4

我建議你閱讀** ** **的**手冊的殼在嘗試使用它之前。一個人不會因爲「我不知道我不應該」而用電鋸刮鬍子...... – 2013-07-29 04:44:26

+1

爲自己說話,@ H2CO3。我寧願活在邊緣。可以這麼說。 –

+0

明白了。創建了一些文件,如2xyz,2abc。該代碼將名稱爲類型2 <>的所有文件名以及數字3放入(使用>)一個名爲5的(自動創建的)文件中。它還將字符串 - 「是有效的不等式」添加到文件5中。 – bashboy

回答

3

shell首先處理輸入/輸出重定向,如> 5,並將相關文件句柄附加到它打開的文件(本例中爲5)。

它還將*擴展到當前目錄中的匹配文件中。所以你最終是:

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

其中輸出發送到您以前打開的文件。

如果你想在文本字符串輸出,你需要告訴shell不要做正常的解釋:

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

等什麼?爲什麼downvote?這個答案絕對正確! – 2013-07-29 05:54:35

+0

明白了。創建了一些文件,如2xyz,2abc。該代碼將名稱爲類型2 <>的所有文件名以及數字3放入(使用>)一個名爲5的(自動創建的)文件中。它還將字符串 - 「是有效的不等式」添加到文件5中。 – bashboy