¿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.


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.


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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.