1

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

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

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

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

4

1 回答 1

2

这应该这样做。您只需要[ ]大括号和!=运算符来比较 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部分man bash

          -s     Silent  mode.  If input is coming from a terminal, char-
                 acters are not echoed.

请注意,当用户按 ENTER 时,也不会有换行符回显给用户,因此您必须在每个之后手动插入换行符,read以便正确格式化行。因此,您可能应该将您的 read 语句替换为以下内容:

read -s -p "Enter your password:" CPASS
echo
于 2013-10-23T23:08:17.163 回答