我创建了一个辅助函数来确定生成密码的指定长度是否有效。如果条件为正则表达式来检查 8-64 的范围,我该如何翻译它?
# Check to see if password length is valid
# @param $1 length specified by the user
# @return True (0) if not valid, False (1) if we're okay
# Usage: if is_valid "$length"
is_valid() {
local length="$1"
if (( "$length" < 8 || "$length" > 64 )); then
return 0
else
return 1
fi
}
最佳答案
您可以使用普通模式匹配来代替正则表达式:
function is_valid () {
[[ $1 == @([8-9]|[1-5][0-9]|[6][0-4]) ]]
}
正则表达式类似:
function is_valid () {
[[ $1 =~ ^([8-9]|[1-5][0-9]|[6][0-4])$ ]]
}
我认为它们中没有任何一个比简单的更具可读性
function is_valid () {
(( 8 <= $1 && $1 <= 64 ))
}
请注意,不需要 if
和 return
。
关于regex - 使用正则表达式通过 Bash 检查范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17982901/