Jika fungsi shell memerlukan pengaturan spesifik -e / + e agar dapat bekerja, apakah mungkin untuk mengatur pengaturan itu secara lokal dan kemudian mengembalikannya ke pengaturan sebelumnya sebelum keluar dari fungsi?
myfunction()
{
# Query here if -e is set and remember in a variable?
# Or push the settings to then pop at the end of the function?
set +e
dosomething
doanotherthing
# Restore -e/+e as appropriate, don't just do unconditional set -e
}
bash
shell-script
usta
sumber
sumber
$-
juga berfungsi/bin/sh
dan Anda mungkin tidak perlu bashism untuk menguraikannya, cukup gunakan misalnya globbing yangcase
menyediakanAnda dapat membaca nilai bendera melalui variabel SHELLOPTS:
Anda melihat bahwa, setelah pengaturan
set -e
, nilaierrexit
dalam$SHELLOPTS
muncul. Anda dapat memeriksanya dari sana.Namun, Anda dapat menyiasatinya (jika mau!) Dengan mengingat poin berikut: menurut Manual :
Jadi, jika Anda menjalankan fungsi Anda dalam sebuah subkulit, seperti
Anda tidak perlu khawatir apakah
errexit
variabelnya diatur atau tidak dalam lingkungan panggilan, dan Anda dapat mengaturnya sesuka Anda.sumber
myfunction
panggilan untukmyfunction || true
menekan efek -e untuk panggilan dan tidak harus melakukanset +e
di dalam fungsi di tempat pertama.