【发布时间】:2021-03-04 08:39:53
【问题描述】:
我希望有人澄清这一点,因为我不明白。 这是一个示例代码,用于测试参数是否为数字(整数)
#/bin/env bash
pattern="^[+|-]?[0-9]+$"
[[ "$1" =~ "$pattern" ]] && echo "1:number" || echo "1:NOT number"
[[ "$1" =~ $pattern ]] && echo "1:number" || echo "1:NOT number"
建议总是引用变量,但是在这里,如果您使用这个带有各种输入的简单脚本进行测试,您会看到如果输入数字,引用的模式变量会返回错误的结果(第一次测试) 这是为什么? 提前感谢任何愿意向我解释这一点的人。 最后,对不起,如果已经回答了,但我还没有找到那个特定的。
【问题讨论】:
-
您在
[[ ... ]]内部,因此通常的引用规则不适用。在这种情况下,有一组不同的引用规则。对于模式匹配,您的引号会抑制特殊正则表达式字符的解释。