Согласно « Linux: The Complete Reference 6th Edition » (стр. 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