Theo " Linux: The Complete Reference 6 bản " (. Pg 44), bạn có thể ống chỉ STDERR bằng cách sử dụng |&
những biểu tượng chuyển hướng.
Tôi đã viết một kịch bản khá đơn giản để kiểm tra điều này:
#!/bin/bash
echo "Normal Text."
echo "Error Text." >&2
Tôi chạy tập lệnh này như thế này:
./script.sh |& sed 's:^:\t:'
Có lẽ, chỉ các dòng được in ra STDERR sẽ được thụt lề. Tuy nhiên, nó không thực sự hoạt động như thế này, như tôi thấy:
Normal Text.
Error Text.
Tôi làm gì sai ở đây?
./script.sh > /tmp/stdout_goes_here |& grep 'grepping_script_stderr'
không làm việc như mong muốn, ví dụ: chuyển hướngscript.sh
'sstdout
(trong đó, theo đoạn thủ công nên xảy ra đầu tiên), sau đó cho phépgrep
để xử lý kịch bản củastderr
. Thay vào đó,stderr
và cả hai đều kết thúc trongstdout_goes_here