Відповідно до " Linux: Повна довідка 6-го видання " (стор. 44), ви можете передавати лише STDERR, використовуючи |&
символи перенаправлення.
Я написав досить простий сценарій, щоб перевірити це:
#!/bin/bash
echo "Normal Text."
echo "Error Text." >&2
Я запускаю цей сценарій так:
./script.sh |& sed 's:^:\t:'
Імовірно, відступними будуть лише рядки, надруковані на STDERR. Однак, насправді це не працює так, як я бачу:
Normal Text.
Error Text.
Що я тут роблю неправильно?
./script.sh > /tmp/stdout_goes_here |& grep 'grepping_script_stderr'
не працює належним чином , тобто: редиректscript.sh
«sstdout
(який, в відповідно до інструкції сниппет повинен відбутися перший), а потім дозволяютьgrep
обробляти сценаріюstderr
. Замість цього,stderr
і tdout` як в кінцевому підсумку вstdout_goes_here