exec呼び出し間でファイルリダイレクトコマンドを保存する方法はありますか?
たとえば、2つのbashスクリプトがあります。スクリプト1では、stdoutとstderrをファイルにリダイレクトします。次に script2 を実行します。
スクリプト1
exec &> >(tee "$logs_file")
echo "something"
exec "./script2.sh"
スクリプト2
echo "something else
ログファイル内にはスクリプト1のechoコマンドのみが表示され、スクリプト2は表示されません。
something
exec呼び出し間でファイルリダイレクトコマンドを保存する方法はありますか?
答え1
例では、いくつかのマイナーなバグを修正しました。説明した問題は表示されません。
# Set up the scenario
mkdir /tmp/555270
cd /tmp/555270
cat <<'EOF' >script1
#!/bin/bash
logs_file=logs_file
exec &> >(tee "$logs_file")
echo "something"
exec "./script2"
EOF
cat <<'EOF' >script2
#!/bin/bash
echo "something else"
EOF
chmod a+x script?
rm -f logs_file
# Run the script
./script1
something
something else
# Examine the log file
cat logs_file
something
something else