根据正则表达式bash验证用户密码

时间:2017-03-05 18:17:25

标签: bash

我一直在尝试编写bash脚本,它使用给定的规则验证用户输入:length> 8,至少一个数字,以及其中至少一个:[@,#,$]

因此正则表达式是:

((?=.*\d)(?=.*[@#$%&*+-=]).{8,})

我试过这个,但没有结果:

result=$(echo $1 | egrep "((?=.*\d)(?=.*[@#$%&*+-=]).{8,})")
echo $result

$1是输入参数。另外,我想将它包装在IF子句中,但echo从不输出任何内容。我做错了什么?

1 个答案:

答案 0 :(得分:2)

这可能会有所帮助:

[[ ${#1} -ge 8 && $1 =~ [0-9] && $1 =~ [@#$] ]] && result="$1"

或三个grep:

result=$(grep -E '.{8}' <<< "$1" | grep '[0-9]' | grep '[@#$]')