Bash
使用程序替換,只發送 stderr 到程序
我有這個:
exec > >( while read line; do echo " stdout: $line"; done ) exec 2> >( while read line; do echo " stderr: $line"; done ) echo "rolo" >&2 echo "cholo"
如果您執行該腳本,則會產生以下輸出:
標準輸出:rolo
標準輸出:標準錯誤:cholo
我怎樣才能只將 stderr 發送到第二個程序替換行?我不明白。
我不明白為什麼會這樣:
標準輸出:rolo
標準輸出:標準錯誤:cholo # 什麼哈哈
您以錯誤的順序設置了重定向。第二個程序替換的標準輸出(以 為前綴
stderr:
)的標準輸出以第一個程序替換為前綴,因為它是在之後執行的。試試這個:
exec 2> >( while read line; do echo " stderr: $line"; done ) exec > >( while read line; do echo " stdout: $line"; done ) echo "rolo" echo "cholo" >&2
這輸出
stderr: cholo stdout: rolo
這就是我想你想要的。