Bash

使用 exec 和 tee 將日誌同時重定向到標準輸出和日誌文件

  • November 19, 2019

在 bash 腳本中,如何使用 將所有標準輸出重定向到日誌文件和tee螢幕上的輸出exec

log_file="$HOME/logs/install.txt-`date +'%Y-%m-%d_%H-%M-%S'`"
[ -f "$log_file" ] || touch "$log_file"
exec 1>> $log_file 2>&1

此程式碼將所有日誌重定向到日誌文件而不是螢幕。

使用帶有重定向的程序替換和:&exec

exec &> >(tee -a "$log_file")
echo "This will be logged to the file and to the screen"

$log_file將包含腳本和任何子流程的輸出,並且輸出也將列印到螢幕上。

  • >(...)啟動程序...並返回一個代表其標準輸入的文件。
  • exec &> ...將標準輸出和標準錯誤都重定向到...腳本的其餘部分(僅exec > ...用於標準輸出)。
  • tee -a將其標準輸入附加到文件中,並將其列印到螢幕上。

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