¿Cuál es el propósito de usar `call` aquí?

1

en un archivo por lotes cmd, encontré la siguiente línea

call sqlcmd -S .\SQLEXPRESS -d main_dev -i create.sql

¿Cuál es el propósito de usar callaquí?

Estoy leyendo https://ss64.com/nt/call.html , pero no puedo entender qué caso en el enlace se aplica aquí.

¿Podemos simplemente ejecutar el comando sin call, es decir

sqlcmd -S .\SQLEXPRESS -d main_dev -i create.sql

Estoy acostumbrado a Bash. ¿Hay algún comando similar en Bash o Linux callen cmd?

Gracias.

Tim
fuente
1
Porque crea un nuevo contexto para la ejecución del script / ejecutable, independiente del contexto y el entorno de los archivos por lotes.
Frank Thomas
Gracias. Estoy acostumbrado a Bash. ¿Hay algún comando similar en Bash o Linux callen cmd?
Tim
Si invoca un archivo por lotes desde otro, entonces usar callsignifica que volverá después y continuará con el archivo por lotes original. Si omite call, se encadenará al archivo y no regresará.
AFH
No hay necesidad de un equivalente en bash: un script llamado siempre regresa. Si quieres encadenar sin volver, úsalo exec.
AFH
Bueno, bash tiene un equivalente opuesto (si eso tiene sentido). En bash, source script.sho . script.shhará que se ejecute un archivo de secuencia de comandos dentro del mismo contexto que la secuencia de comandos en la que se produce, mientras que de forma predeterminada una secuencia de comandos iniciada desde dentro de una secuencia de comandos se ejecutará con su propio stdin / out / err, etc.
Frank Thomas

Respuestas:

1

Debería examinar el archivo por lotes en el callque se encuentra la declaración. Normalmente, una calldeclaración por lotes significa que el archivo por lotes que llama debe hacer más, por lo que el archivo por lotes llamado debe devolver el control al archivo por lotes que llama. Si se va a realizar el cambio de preguntar acerca de, sqlcmdque no devolverá el control al archivo por lotes llamado, y nada después de que no se presentaría.

Jeff Zeitlin
fuente
Gracias. Estoy acostumbrado a Bash. ¿Hay algún comando similar en Bash o Linux callen cmd?
Tim
No, el comportamiento predeterminado en bash es volver al script "padre".
Jeff Zeitlin