4
スクリプト出力のリダイレクトとログ
次のスニペットを整理しようとしています。設計目標は、スクリプトからのすべての出力をログに記録することであり、ラッパーであってはなりません。線が少ないほど良いです。 (この段階では)ユーザー入力は気にしません。ターゲットスクリプトは非対話的に実行されます。 スニペットは ログにstdoutを出力し、常にコンソールにエコーする ログにstderrを出力し、デバッグが有効な場合はコンソールにエコー stderrメッセージには、タイムスタンプとその他の有用性をプレフィックスとして付ける必要があります 現時点では、Ubuntuのように最近のバージョンのbash(4.2以降?)でのみテストできますが、CentOS6では正しく動作しません。 DEBUG_LOG="${0##*/}.log" # copy stdout to log always and echo to console exec > >(tee -a ${DEBUG_LOG}) # copy stderr to log only, unless debugging is enabled [ $DEBUG_TEST = "true" ] \ && exec 2> >(tee -a ${DEBUG_LOG} >&2) \ || exec 2>> …