我正在尝试编写一个使用nocasematch
而不更改该选项的调用者设置的bash功能。该函数的定义是:使Shopt变更为本地功能
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
的返回值,但这仍然意味着函数应该记住这一点,并在退出之前重置它。
很好用,谢谢。 – Thor
+1整洁!我不知道。 – tripleee
'foo(){...}'看起来很自然,你从不认为花括号不是函数语法的一部分,而不是最常用的复合命令。 – chepner