我知道EXEC是在當前進程中執行的程序從here無法理解在bash腳本結合exec和重定向
EXEC引述倒在當前進程替換當前的程序,而無需 派生一個新的進程。這不是您在編寫的每個 腳本中都會使用的內容,但它偶爾派上用場。
我正在看一個bash腳本,我無法準確理解這一行。
#!/bin/bash
LOG="log.txt"
exec &> >(tee -a "$LOG")
echo Logging output to "$LOG"
在這裏,exec沒有任何程序名稱可以運行。這是什麼意思?它似乎在捕獲執行輸出到日誌文件。我會明白,如果它是exec program |& tee log.txt
但在這裏,我不明白exec &> >(tee -a log.txt)
。爲什麼另一個>
後&>
?
這條線的含義是什麼? (我知道 - 一個選項是追加和&>
是重定向,包括標準錯誤)
編輯:我選擇瞭解決方案後,我發現exec &> >(tee -a "$LOG")
工程時,它是bash shell(而不是sh)。所以我將最初的#!/bin/sh
修改爲#!/bin/bash
。但exec &>> "$LOG"
適用於bash和sh。
您的系統是否安裝了bash手冊頁?啓動它並搜索「exec」(exec後跟一個空格)。 – Jens