直到用户输入匹配变量do

时间:2013-10-23 22:50:20

标签: bash shell input compare

好的,所以我正在尝试创建各种用户名/密码登录脚本。 (可能不是我仍在努力的最安全的想法);)

我的脚本会加载变量以与这样的文件进行比较。 (现在我正在处理密码部分)

./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;

谢谢你&任何帮助表示赞赏。

1 个答案:

答案 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