我正在嘗試編寫一個使用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