Почему нет необходимости в `call` для возврата из вызываемого пакетного сценария, который участвует в конвейере?

Предположим, что есть пакетный файл (вызывающий), который выполняет другой пакетный файл (вызываемый),call Команда должна использоваться, чтобы вернуться к вызывающей стороне после того, как вызываемая сторона завершит выполнение. Вот пример:

caller.bat:

echo Calling another script...
call callee.bat
echo Returned from callee...

callee.bat (в том же месте):

echo   Being called from caller...

Вывод будет таким (без команды echos), показывающим, что выполнение вернулось, как и ожидалось:

Calling another script...
  Being called from caller...
Returned from callee...

Еслиcall команда была отклонена в вызывающей стороне, вывод будет:

Calling another script...
  Being called from caller...

Но как только звонящий вовлекается в трубу (|), нет никакой разницы в том,call команда используется. Например:

caller.bat (вызываемый остается без изменений):

echo Calling another script...
break | callee.bat
echo Returned from callee...

Выход будет такой, хотя нетcall команда.

Calling another script...
  Being called from caller...
Returned from callee...

В чем причина такого поведения, что заставляет выполнение возвращаться к вызывающему здесь?

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

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