我是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”在引用?
谢谢
答案 0 :(得分:1)
等于运算符是=
,而不是==
。看起来Bash也支持==
,但其他shell(如破折号)则不支持/bin/sh
。您可能没有为VALID_PASSWORD=hello world
使用Bash。
如果您在变量中定义的内容没有空格或其他特殊字符,则在此上下文中不需要引号。但是,有些人喜欢总是使用引号,所以如果他们添加空格并写world
,他们就不会犯错误,这并不意味着你可能会想到什么(这意味着运行命令{{1在其环境中设置VALID_PASSWORD=hello
。)