Make shopt change local to function
问题 I'm trying to write a bash function that uses nocasematch without changing the callers setting of the option. The function definition is: is_hello_world() { shopt -s nocasematch [[ "$1" =~ "hello world" ]] } Before I call it: $ shopt nocasematch nocasematch off Call it: $ is_hello_world 'hello world' && echo Yes Yes $ is_hello_world 'Hello World' && echo Yes Yes As expected, but now nocasematch of the caller has changed: $ shopt nocasematch nocasematch on Is there any easy way to make the