Here-Document

為什麼在一些 heredocs 之前有一個 bash 關鍵字?

  • March 22, 2017

在一些 heredocs 中,您會在開始符 (<<)、名稱和文件描述符之前看到關鍵字 bash。例如:

bash /dev/fd/10 10&lt;&lt;'SES'

為什麼 Bash 在那裡?我的意思是,我們已經在 Bash 中工作了,它不像以前那樣cat用於顯示文本然後將其重定向到另一個文件,cat &lt;&lt; EOT &gt;&gt; /file.txt因此我作為一個新生問,為什麼我們需要關鍵字 bash。

bash沒有關鍵字,它是正在執行的命令。它正在通過參數/dev/fd/10。執行腳本的 shell(可能是也可能不是 bash)正在設置一個從文件描述符 10 讀取的 heredoc。

因此,正在呼叫 bash 以將 heredoc 作為 shell 腳本執行。這類似於 if line read bash /path/to/script.sh——在這種情況下,腳本只是來自一個heredoc。

為什麼有人這樣做(而不是在沒有上下文(可能還有歷史)的情況下無法回答而不僅僅是使用。一個猜測(正如 DopeGhoti 建議的那樣)是腳本可能在不同的 shell 下執行,而那一點需要 bash。另一種可能性是腳本的作者只是不知道替代方法。( *commands* )

至於為什麼使用 FD 10 而不是標準輸入,可能是因為腳本塊也需要從標準輸入讀取。

引用自:https://unix.stackexchange.com/questions/353117