2009-08-30 61 views
2

當在命令行上輸入「cat> xx.txt < < EOF」時,cmdline的進一步輸入將轉到文件xx.txt,直到寫入EOF。 EOF在這裏不是一個神聖的詞,如果改爲命令是cat> xx.txt < < BBB,則cmdline輸入轉到xx.txt,直到寫入BBB。我不知道這背後的理由是什麼(< < end_of_input_sequence)。貓手冊頁沒有解釋太多。 我只在腳本中看過這個。Cat魔術 - 輸入結束

回答

9

這是一個shell的功能,而不是cat - 這就是爲什麼你不會在cat手冊中找到它。

它被稱爲「Here文檔」 - 有關文檔,請參閱Advanced Bash-Scripting Guide的此頁。

7

這被稱爲here document。我相信它首先出現在shell中,但是一些編程語言如Perl,Ruby和PHP也實現了這種風格。

4

該語法被稱爲Here Document(滾動一下找到它)。

它不是特定於任何命令,也不是任何其他命令的貓;它可以在殼的人身上找到;例如,man bash

3.6.6這裏文獻

這種類型的重定向指示 殼從當前 源讀取輸入直到僅含有 字(沒有尾隨空白)的線看到 。所有讀取到 點的行然後將用作命令的標準輸入 。

(不是一個完整的報價 - 還有更多閱讀的人)


BTW,這已在一些編程語言重新使用,如PHP語法; - )