regexp中的
此命令中的+$是什么:[[$1=~^[0-9]+$]]
+
适用于[0-9]
,而不是$
。
预期的命令是:
[[ $1 =~ ^[0-9]+$ ]]
它检查$1
是否只包含数字,例如123
或9
(但不包括123f
或foo
或空字符串(。
它分解为:
[[
,启动Bash扩展测试命令$1
,第一个参数=~
,Bash扩展测试命令regex匹配运算符^[0-9]+$
,要匹配的正则表达式:^
,与线路起点匹配的锚点[0-9]+
,一个或多个数字[0-9]
,一位数字+
,前一个原子中的一个或多个
$
,与线路末端匹配的锚
]]
终止测试命令
+
匹配"前面模式的1倍或更多倍",$
表示字符串锚的结束。
^
是字符串锚的开头($
的自然补码(,[0-9]
匹配任何一个数字(在0到9的范围内(。