exec呼び出し間のファイルリダイレクトの維持

exec呼び出し間のファイルリダイレクトの維持

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

おすすめ記事