Dalam shell, exec
apakah 1) membuka file dan pengalihan 2) aktual exec
(mengganti gambar proses saat ini dengan gambar proses lain).
Ini exec
adalah pengalihan.
Pertama, Anda mengarahkan ( exec 1> >(tee $LOGFILE)
) stdout
deskriptor (1) ke proses yang dihasilkan oleh pipa substitusi yang terhubung ke tee
proses yang dijalankan bersamaan yang memiliki $LOGFILE
argumen pertama dan kemudian Anda mengarahkan stderr
deskriptor (2) ke tempat yang sama dengan tempat deskriptor 1
sekarang menunjuk (tee) pipa).
Ingatlah bahwa pewaris skrip dapat diwarisi, Anda baru saja membuat semua masa depan stdout
dan stderr
hasilnya masuk ke tee
proses, yang menulisnya ke $LOGFILE
dan ke mana pun skrip yang diajukan awalnya (mungkin terminal Anda).
Catatan:
Proses tee menghasilkan keluaran stdout asli (= arsip asli 1) karena, seperti yang Anda dapat pelajari dari / mencari bash (1) untuk Pergantian Ekspansi Perintah Sederhana dan Pergantian Proses , subtitusi proses ( >()
<()
) terjadi (bersama dengan ekspansi lainnya) sebelum pengalihan dijalankan, yang berarti bahwa pengalihan di exec 1> >(tee "$LOGFILE")
terjadi setelah tee
telah dimulai, meninggalkan tee
dengan 1 pengesahan yang sama yang diwarisi dari shell induk. (Jika sebaliknya, tee
akan dibuat untuk menulis ke input sendiri, yang mungkin membuatnya menemui jalan buntu, tergantung pada pola IO-nya).