Я пытаюсь написать функцию bash, которая использует nocasematch
не изменяя настройку вызывающих опций. Определение функции:
is_hello_world() {
shopt -s nocasematch
[[ "$1" =~ "hello world" ]]
}
Прежде чем я позвоню:
$ shopt nocasematch
nocasematch off
Назови это:
$ is_hello_world 'hello world' && echo Yes
Yes
$ is_hello_world 'Hello World' && echo Yes
Yes
Как и ожидалось, но теперь nocasematch
абонента изменилось:
$ shopt nocasematch
nocasematch on
Есть ли какой-либо простой способ изменить параметр на локальную функцию?
Я знаю, что могу проверить возвращаемое значение shopt -q
но это все равно означает, что функция должна запомнить это и сбросить его перед выходом.