【发布时间】:2015-08-28 16:31:15
【问题描述】:
所以总的来说,我对 bash 和脚本编写有点陌生。我是一名学生,我们的任务是创建一个密码检查器,用于检查命令 $1 处的参数是否符合密码标准。如果 $1 为空,脚本应该生成一个可接受的密码(这部分的完成非常感谢这里的另一个线程)。
我遇到问题的地方是检查 $1 的条件,因为密码有一个特定的标准。密码标准如下:
- 至少一个大写字母
- 至少一个小写字母
- 至少一位数
- $1 大小必须至少为 8 个字符且小于 16 个
- “@#$%&*-=+”范围内的一个且只有一个符号
我将脚本设置为一系列嵌套的 if 语句,这些语句向下运行,消除了出现的可能性——即,如果大小合适但其他地方有问题,则进入下一个“级别”;如果尺寸错误但其他一切都很好,则回显尺寸错误等。
我的脚本正确识别了大写、小写、数字、大小,并且至少有一个符号,但我不知道如何检查一个且只有一个特殊字符。
我目前的思路是将 $1 运行到字符范围的 grep 中,然后如果计数大于或小于 1,则给出错误。我最接近的是:
回声 $1 | grep -o "[@#$%&*-=+]" | wc -l
但输出 9 - 我假设这是字符范围的大小。
有什么建议吗?
【问题讨论】:
标签: string bash comparison