¿Por qué no hay necesidad de que 'call' regrese del script por lotes llamado que está involucrado en una tubería?

Suponiendo que hay un archivo por lotes (llamante) que ejecuta otro archivo por lotes (llamado), elcall El comando debe usarse para volver a la persona que llama después de que la persona que llama termina la ejecución. Aquí hay un ejemplo:

caller.bat:

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

callee.bat (en la misma ubicación):

echo   Being called from caller...

El resultado será este (omitiendo el comando echos), que muestra que la ejecución se devolvió como se esperaba:

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

Si elcall el comando se descartó en la persona que llama, la salida sería:

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

Pero tan pronto como la persona que llama está involucrada en una tubería (|), no hay diferencia en si elcall se utiliza el comando Por ejemplo:

caller.bat (la persona que llama permanece sin cambios):

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

El resultado será este, aunque no haycall mando.

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

¿Cuál es la razón de este comportamiento, qué hace que la ejecución vuelva a la persona que llama aquí?

Respuestas a la pregunta(0)

Su respuesta a la pregunta