Bash

bash 中的表達式 $(<‘dir/file’) 是什麼意思?

  • November 28, 2013

在我無法在此處發布的 bash 腳本中,我看到以下表達式:

$(&lt;"dir/file")

據我了解,表達式$(...)計算內部的命令(如使用反引號時),但圓括號內使用的尖括號的作用是什麼?

重定向&lt;"dir/file"在應用重定向的命令期間打開文件以在標準輸入上讀取。當沒有命令時,打開文件以供讀取(如果文件不存在或缺少適當的權限,則會導致錯誤),但除此之外,重定向無效。

Ksh 添加了一個擴展,已被 bash 和 ksh 採用。如果命令替換包含輸入重定向而沒有其他內容$(&lt;"dir/file")(沒有命令、沒有其他重定向、沒有分配等),則命令替換將替換為文件的內容。因此$(&lt;"dir/file")等效於$(cat "dir/file")(除了它不呼叫該cat實用程序,因此即使cat已被替換或不在命令搜尋路徑中,它也會稍微快一些並且做同樣的事情)。

這在bash 手冊中的“命令替換”下有所提及。

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