0

我是 shell 脚本的新手,我从教程中复制的以下脚本password.sh一直存在问题。

#!/bin/sh

    VALID_PASSWORD="secret"

    echo "Please enter the password:"
    read PASSWORD

    if [ "$PASSWORD" == "$VALID_PASSWORD" ]; then
        echo "You have access!"
    else
        echo "ACCESS DENIED!"
    fi

在我的终端中,我输入了 ./password.sh来激活脚本。当提示输入密码时,我输入密码秘密,但我不断收到ACCESS DENIED。我错过了什么?

另外,我认为变量不需要在引号中(只有在有空格的情况下?)。例如变量_1=你好。为什么在上面的脚本中,VALID_PASSWORD="secret" 被引用了?

谢谢你

4

1 回答 1

1

等式运算符是=,不是==。看起来 Bash==也支持,但其他 shell,如 dash,不支持。您可能没有将 Bash 用于您的/bin/sh.

如果您在变量中定义的内容没有空格或其他特殊字符,则在这种情况下不需要引号。但是,有些人喜欢总是使用引号,所以如果他们添加空格和 write 以后不会出错VALID_PASSWORD=hello world,这并不意味着您可能期望的那样(这意味着在其环境中运行world带有VALID_PASSWORD=helloset 的命令)。

于 2013-09-12T15:45:56.263 回答