Anda dapat menggunakan trik berikut untuk menukar stdout
dan stderr
. Kemudian Anda hanya menggunakan fungsi pipa biasa.
( proc1 3>&1 1>&2- 2>&3- ) | proc2
Disediakan stdout
danstderr
keduanya menunjuk ke tempat yang sama di awal, ini akan memberi Anda apa yang Anda butuhkan.
Apa yang dilakukan x>y
bit adalah mengubah pegangan file x
sehingga sekarang mengirimkan informasinya ke tempat pegangan file y
saat ini menunjuk. Untuk kasus khusus kami:
3>&1
membuat pegangan baru3
yang akan menampilkan pegangan saat ini1
(stdout asli), hanya untuk menyimpannya di suatu tempat untuk poin terakhir di bawah.
1>&2
memodifikasi pegangan 1
(stdout) menjadi keluaran ke pegangan saat ini2
(stderr asli).
2>&3-
memodifikasi pegangan 2
(stderr) menjadi keluaran ke pegangan saat ini3
(stdout asli) kemudian menutup pegangan 3
(melalui -
di akhir).
Ini secara efektif adalah perintah swap yang Anda lihat dalam algoritma pengurutan:
temp = value1;
value1 = value2;
value2 = temp;
rc
, yang merupakan shell lain. Misalnya:proc1 |[2] proc2
. Bukankah itu bagus? Tapi tidakbash
.