我有一个 Bash 函数f
,它将字符串值s
作为其参数之一。
s
如果之间不是整数,我需要中止执行[1000-9999]
。
我最初以为我会尝试将字符串转换为 int 并对结果执行算术范围检查,在错误时中止,但所有其他参数都使用 RegEx 检查,所以我不妨保持一致。我必须,事实上。
重击版本:4+
我想不出比这更好看的模式:
[[ "$s" =~ [[:\<:]][[:digit:]]{4}[[:\>:]] ]]
你能帮我提高上面的模式检查结构的可读性吗?
我特别不喜欢上面的模式是:
- 必须用反斜杠将单词边界字符转义
<
为[[:\<:]]
- 它的绝对长度,以及方括号的疯狂数量
我的一个想法是使用全线边界检查,尽管那是一种黑客行为?(即使用 ^...$ 而不是 \b...\b)
可选:: 在 Bash 中是否存在相当完善的参数验证模式?