我正在尝试使用 glob 模式进行匹配。但是在使用的时候就失败了
myfun 12
。
dgt='^+([0123456789])$'
[[ "$1" == $dgt ]] && echo "SUCCESS" || echo "FAILURE"
我正在尝试使用 glob 模式进行匹配。但是在使用的时候就失败了
myfun 12
。
dgt='^+([0123456789])$'
[[ "$1" == $dgt ]] && echo "SUCCESS" || echo "FAILURE"
您的模式 ,
^+([0123456789])$
是扩展的 globbing 模式和正则表达式的混合。globbing 模式不需要显式地锚定,因为无论如何它总是被锚定的。因此,以 开头^
和结尾的通配符模式$
将匹配字符串开头和结尾的那些文字字符。如果您想使用通配模式并且不想^
在开头和$
结尾匹配,请删除这些。您最终将得到以下代码:
在没有扩展 globbing 模式的 shell 中,匹配非数字更容易:
在
bash
shell 中,您也可以使用上面的代码,因为它是可移植的并且可以在所有sh
兼容的 shell 中工作,或者您可以使用如果不是绝对需要全局模式匹配,您也可以使用正则表达式。
使用 Bash,您可以使用
=~
正则表达式运算符: