Bash脚本用户名密码验证功能异常问题求助
Bash脚本用户名/密码验证问题修复
问题出在字符串比较误用了整数运算符:你脚本里使用的-eq是专门用于整数比较的运算符,当用它对比非数字字符串时,Bash会自动将这些字符串解析为0。所以不管输入什么用户名,$username和correct_u都会被当作0处理,0 -eq 0永远成立,导致用户名验证一直显示通过。密码验证也存在同样的问题。
修复方案
字符串比较需要使用==(在[[ ]]语法中推荐使用该写法),同时建议给变量加上双引号,避免特殊字符引发的意外问题。另外修正了脚本里的拼写错误(Incorect改为Incorrect)。
修改后的完整脚本:
#!/bin/bash echo "Username" read username echo "Password" read password sleep 1 correct_u=user correct_p=pass if [[ "$username" == "$correct_u" ]] then echo "Username Verified..." else echo "Username Incorrect..." fi sleep 1 if [[ "$password" == "$correct_p" ]] then sleep 1 echo "Password Verified..." else echo "Password Incorrect..." fi
内容的提问来源于stack exchange,提问作者Mikeowsky
相关产品推荐
相关产品推荐

