好的,所以我正在尝试创建各种用户名/密码登录脚本。 (可能不是我仍在努力的最安全的想法);)
我的脚本会加载变量以与这样的文件进行比较。 (现在我正在处理密码部分)
./path/to/variables.conf
此文件将包含一个名为
的变量PASS=SOME_VALUE
我计划使用read来获取将要比较的变量
read -p "Enter your password:" CPASS;
现在我缺少的部分(我设想它如何工作)
while "$CPASS" doesn't match "$PASS" do
read -p "Wrong password, try again:" CPASS;
谢谢你&任何帮助表示赞赏。
答案 0 :(得分:2)
这应该这样做。您只需要[ ]
个大括号,!=
运算符需要compare strings in bash:
PASS=SOME_VALUE
read -p "Enter your password:" CPASS
while [ "$CPASS" != "$PASS" ]; do
read -p "Wrong password, try again:" CPASS
done
另请注意,最好将-s
参数传递给read,以便输入的密码不会回显给用户。来自read
的{{1}}部分:
man bash
请注意,当用户点击ENTER时,也不会有回拨给用户的新行,因此您必须在每 -s Silent mode. If input is coming from a terminal, char-
acters are not echoed.
之后手动插入换行符,以便正确格式化行。所以你应该用这样的东西替换你的阅读语句:
read