, двоичные вложения должны быть закодированы как ASCII, и это обычно разворачивает их с 20-25%.
у Вас будет та проблема расширения с любой почтовой программой, командной строкой или нет. Можно легко протестировать это при помощи тандерберда и отправки файла через Google (или поставщик).
Оказывается, управление заданием включения делает трюк - но только если нет ловушки SIGSEGV
, настройка, которая предотвращает многословный вывод.
set -o errexit
set -o pipefail
set -o monitor
trap 'echo "ERR $?"' ERR
echo "hi" | ./docrash | cat
echo "not reached"
Запуск этого дает именно тот выход, который я искал, и даже больше. Он печатает PID для каждого дочернего элемента и показывает ошибку:
$ ./err.sh >& err.log
$ cat err.log
./err.sh: line 21: 25110 Done echo "hi"
25111 Segmentation fault (core dumped) | ./docrash
25112 | cat
ERR 139
$ gdb docrash core.25111
...
Настройки могут быть объединены, если вы хотите увидеть сбои в трубе, но не прерывать сценарий, который работает:
set -o pipefail
set -o monitor
echo "hi" | ./docrash | cat
echo "pipe returned $?"
Печатает трассу и продолжает:
$ ./err.sh
./err.sh: line 21: 25110 Done echo "hi"
25111 Segmentation fault (core dumped) | ./docrash
25112 | cat
pipe returned 139