Нужны объяснения поведения команд встроенной в Linux bash для Linux

ИзBash Справочное руководство Я получаю следующее оexec встроенная команда bash:

Если указана команда, она заменяет оболочку без создания нового процесса.

Теперь у меня есть следующееbash сценарий:

#!/bin/bash
exec ls;
echo 123;
exit 0

Это выполнено, я получил это:

cleanup.sh  ex1.bash  file.bash  file.bash~  output.log
(files from the current directory)

Теперь, если у меня есть этот скрипт:

#!/bin/bash
exec ls | cat
echo 123
exit 0

Я получаю следующий вывод:

cleanup.sh
ex1.bash
file.bash
file.bash~
output.log
123

Мой вопрос:

Если когдаexec вызываетсяон заменяет оболочку без создания нового процессазачем когда ставить| cat,echo 123 печатается, но без него это не так. Итак, я был бы счастлив, если бы кто-нибудь смог объяснить, в чем логика такого поведения.

Благодарю.

РЕДАКТИРОВАТЬ: После ответа @torek, мне еще сложнее объяснить поведение:

1.exec ls>out Команда создаетout файл и положить в негоlsкомандный результат;

2.exec ls>out1 ls>out2 создает только файлы, но не помещает в них никакого результата. Если команда работает как предложено, я думаю, что команда № 2 должна иметь тот же результат, что и команда № 1 (даже больше, я думаю, что она не должна была создаватьout2 файл).

Ответы на вопрос(1)

Ваш ответ на вопрос