此命令中的+ $是什么: [[$ 1 =〜^ [0-9] + $]]
答案 0 :(得分:2)
+
适用于[0-9]
,而不适用于$
。
预期的命令是:
[[ $1 =~ ^[0-9]+$ ]]
它检查$1
是否仅包含数字,例如123
或9
(但不是123f
或foo
或空字符串)。
它分解为:
[[
,Bash扩展测试命令的开始$1
,第一个参数=~
,Bash扩展测试命令正则表达式匹配运算符^[0-9]+$
,要匹配的正则表达式:
^
,锚定匹配行的开头[0-9]+
,一个或多个数字
[0-9]
,一个数字+
,一个或多个先前原子$
,与行尾匹配的锚点]]
终止测试命令答案 1 :(得分:1)
+
匹配“前一模式的1倍或更多倍”,并且$
表示字符串锚点的结尾。
^
是字符串锚的开头(是$
的自然补码),而[0-9]
则是匹配任意一位数字(范围为0到9)。