Apa tujuan menggunakan `panggilan` di sini?

1

dalam file batch cmd, saya menemukan baris berikut

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

Apa tujuan menggunakan call sini?

saya membaca https://ss64.com/nt/call.html , tetapi tidak dapat menemukan casing dalam tautan yang berlaku di sini.

Bisakah kita cukup menjalankan perintah tanpa call, yaitu

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

Saya sudah terbiasa dengan Bash. Apakah ada perintah serupa di Bash atau Linux call dalam cmd?

Terima kasih.

Tim
sumber
1
Karena itu menciptakan konteks baru untuk pelaksanaan script / executable, terlepas dari konteks file batch dan lingkungan.
Frank Thomas
Terima kasih. Saya sudah terbiasa dengan Bash. Apakah ada perintah serupa di Bash atau Linux call dalam cmd?
Tim
Jika Anda memanggil file batch dari yang lain, maka gunakan call berarti akan kembali setelahnya dan melanjutkan dengan file batch asli. Jika Anda menghilangkan call, maka Anda akan berantai ke file dan tidak kembali.
AFH
Tidak perlu untuk yang setara di bash: skrip yang dipanggil selalu kembali. Jika Anda ingin rantai tanpa kembali, gunakan exec.
AFH
Nah, bash memiliki padanan yang berlawanan (jika itu masuk akal). Dalam bash, the source script.sh atau . script.sh akan menyebabkan file skrip dieksekusi dalam konteks yang sama dengan skrip tempat skrip tersebut muncul, sedangkan secara default skrip yang diluncurkan dari dalam skrip akan dijalankan dengan stdin / out / err sendiri, dll.
Frank Thomas

Jawaban:

1

Anda perlu memeriksa file batch di mana file call pernyataan ditemukan. Biasanya, batch call pernyataan berarti bahwa ada lebih banyak yang perlu dilakukan oleh file batch panggilan, sehingga file batch yang dipanggil perlu mengembalikan kontrol ke file batch panggilan. Jika Anda membuat perubahan yang Anda tanyakan, sqlcmd akan tidak mengembalikan kontrol ke file batch panggilan, dan apa pun setelah itu tidak akan berjalan.

Jeff Zeitlin
sumber
Terima kasih. Saya sudah terbiasa dengan Bash. Apakah ada perintah serupa di Bash atau Linux call dalam cmd?
Tim
Tidak, perilaku default di bash adalah kembali ke skrip "induk".
Jeff Zeitlin