Bash
bash 中的表達式 $(<‘dir/file’) 是什麼意思?
在我無法在此處發布的 bash 腳本中,我看到以下表達式:
$(<"dir/file")
據我了解,表達式
$(...)
計算內部的命令(如使用反引號時),但圓括號內使用的尖括號的作用是什麼?
重定向
<"dir/file"
在應用重定向的命令期間打開文件以在標準輸入上讀取。當沒有命令時,打開文件以供讀取(如果文件不存在或缺少適當的權限,則會導致錯誤),但除此之外,重定向無效。Ksh 添加了一個擴展,已被 bash 和 ksh 採用。如果命令替換包含輸入重定向而沒有其他內容
$(<"dir/file")
(沒有命令、沒有其他重定向、沒有分配等),則命令替換將替換為文件的內容。因此$(<"dir/file")
等效於$(cat "dir/file")
(除了它不呼叫該cat
實用程序,因此即使cat
已被替換或不在命令搜尋路徑中,它也會稍微快一些並且做同樣的事情)。這在bash 手冊中的“命令替換”下有所提及。