Jawaban:
Anda dapat menelepon execlagi untuk mengembalikan penjelas asli. Anda harus menyimpannya di suatu tempat.
exec 3>&1 4>&2 1>script.log 2>&1
… logged portion …
exec 1>&3 2>&4
echo >&2 "Done"
Di dalam bagian yang dicatat, Anda dapat menggunakan deskriptor asli untuk satu perintah dengan mengarahkan kembali ke deskriptor tambahan.
echo "30 seconds remaining" >&3
Sebagai alternatif, Anda dapat meletakkan bagian log yang telah dicatat di dalam perintah gabungan dan mengarahkan ulang perintah gabungan tersebut. Ini tidak berfungsi jika Anda ingin menggunakan deskriptor asli dalam perangkap di suatu tempat di dalam bagian yang diarahkan itu.
{
… logged portion …
} >script.log 2>&1
echo >&2 "Done"
Gunakan tambahan fd 3 dan 4 untuk stdout dan stderr dan cukup arahkan 1 dan 2 ke mereka di akhir skrip Anda:
exec 3>&1 4>&2
exec >script.log 2>&1
echo "Some code"
exec >&3 2>&4
echo "Done"
exec 3>/dev/stdout 4>/dev/stderr -bash: /dev/stdout: Permission denied
Pertama, Anda harus memeriksa apakah Anda memiliki tty atau tidak.
if tty -s; then
echo "Hello, World" > $(tty)
fi
ttyutilitas eksternal . Anda dapat mengalihkan ke perangkat khusus /dev/tty.
>&3menjadikan ini solusi pilihan saya. Terima kasih lagi)!