基本Shell脚本变量以及if else

时间:2013-09-12 15:38:57

标签: shell

我是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 来激活脚本。当提示输入密码时,我输入密码 secret ,但我一直在 ACCESS DENIED 。我错过了什么?

另外,我认为Variables不需要引用(仅当有空格?)。例如variable_1 = Hello。 为什么在上面的脚本中,VALID_PASSWORD =“secret”在引用?

谢谢

1 个答案:

答案 0 :(得分:1)

等于运算符是=,而不是==。看起来Bash也支持==,但其他shell(如破折号)则不支持/bin/sh。您可能没有为VALID_PASSWORD=hello world使用Bash。

如果您在变量中定义的内容没有空格或其他特殊字符,则在此上下文中不需要引号。但是,有些人喜欢总是使用引号,所以如果他们添加空格并写world,他们就不会犯错误,这并不意味着你可能会想到什么(这意味着运行命令{{1在其环境中设置VALID_PASSWORD=hello。)