Bash

如何將輸出發送到日誌文件和控制台?

  • March 24, 2020

關於輸出,我曾經把它放在我所有的腳本之上。docker 的停止和啟動按預期工作,日誌文件包含它應該包含的內容,但控制台也沒有輸出。我在這裡錯過了什麼?

#!/bin/sh
LOGFILE="/mnt/user/HardHomeSystemData/SysLogs/PlexClear.log"
exec 3>&1 4>&2
trap 'exec 2>&4 1>&3' 0 1 2 3
exec 1>$LOGFILE 2>&1

#clear plexes codecs for EAC3 issues, stop the docker, rm codecs, restart docker
docker stop plex
rm -r /mnt/user/appdata/plex/Library/Application\ Support/Plex\ Media\ Server/Codecs/*
docker start plex

我不知道怎麼做,sh但是在 bash 中你可以用Process Substitution來做,tee哪個應該做你想做的

#!/usr/bin/env bash

logfile=logfile.txt

exec 3>&1 4>&2

trap 'exec 2>&4 1>&3' 0 1 2 3

exec > >(tee -a "$logfile") 2>&1  ##: Print to stdout and logfile.

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