Here-Document

bash /dev/fd/3 3<< ‘EOF’ 中的 3 3 是什麼意思

  • November 17, 2016

我看到了一個 Unix 程式碼,但沒有足夠的背景來完全解密:

bash /dev/fd/3 3&lt;&lt; 'EOF'

上面的意思是3 3什麼?我知道什麼是heredoc、什麼是Bas​​h、一個設備和fd,但我不知道什麼是3 space 3 …當我搜尋Google 中引用的片語時,我基本上一無所獲。

這裡給出的程式碼是一個特殊的 heredoc,它允許就地執行腳本(特別是那些已經包含內部 heredocs 和註釋的腳本),而無需創建具有適當權限的文件……

Unix高手可以解釋一下是什麼3 3部分嗎?謝謝,

該片語是一種將 here-doc 傳遞到bash0 以外的文件描述符的方式。即 3。

片語的第一部分 ,以文件描述符 3 作為其輸入base /dev/fd/3執行,第二部分, 告訴 shell 將 here-doc 寫入該文件描述符。bash``3&lt;&lt; EOF

請注意,3&lt;&lt;必須是單個標記,沒有空格。

通過這樣做,在 here-doc 腳本中讀取的任何標準輸入都將讀取真正的輸入(來自文件描述符 0),而不是 here-doc 本身。據我了解,如果不做這樣的事情,here-doc 最終會成為內部 bash 的標準輸入,在這種情況下,它無法讀取“真實輸入”。

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