Jika Anda akan memanggil skrip source
, Anda dapat menggunakan di return <x>
mana <x>
status skrip akan keluar (gunakan nilai bukan nol untuk kesalahan atau salah). Tetapi jika Anda menjalankan skrip yang dapat dieksekusi (yaitu, langsung dengan nama filenya), pernyataan kembali akan menghasilkan komplain (pesan kesalahan "kembali: hanya dapat` kembali 'dari suatu fungsi atau skrip bersumber ").
Jika exit <x>
digunakan sebagai gantinya, ketika skrip dipanggil dengan source
, itu akan menghasilkan keluar shell yang memulai skrip, tetapi skrip yang dapat dieksekusi hanya akan berakhir, seperti yang diharapkan.
Untuk menangani kedua kasus dalam skrip yang sama, Anda dapat menggunakan
return <x> 2> /dev/null || exit <x>
Ini akan menangani permintaan mana saja yang cocok. Itu dengan asumsi Anda akan menggunakan pernyataan ini di tingkat atas skrip. Saya akan menyarankan agar tidak langsung keluar dari skrip dari dalam suatu fungsi.
Catatan: <x>
seharusnya hanya angka.
1
secara konsisten. Jika skrip dimaksudkan untuk dijalankan oleh skrip lain, Anda mungkin ingin mendefinisikan kumpulan kode status Anda sendiri dengan makna tertentu. Misalnya,1
== tes gagal,2
== kompilasi gagal. Jika skrip adalah bagian dari sesuatu yang lain, Anda mungkin perlu menyesuaikan kode untuk mencocokkan praktik yang digunakan di sana. Misalnya, ketika bagian dari rangkaian uji dijalankan oleh automake, kode77
tersebut digunakan untuk menandai tes yang dilewati.