Linux 终端密码
所以,我正在尝试制作一个密码脚本,它在大部分情况下都是有效的。但是,循环将永远持续,而不是在每次“错误密码”后停止,因此用户可以键入密码。然而,它不断地滥发不正确的密码,根本没有机会键入任何东西。 我还试着把Linux 终端密码,linux,bash,Linux,Bash,所以,我正在尝试制作一个密码脚本,它在大部分情况下都是有效的。但是,循环将永远持续,而不是在每次“错误密码”后停止,因此用户可以键入密码。然而,它不断地滥发不正确的密码,根本没有机会键入任何东西。 我还试着把readpassword放在until行下面,但这也不起作用 #!/bin/bash # Author: Dom (GlitchyShadowZ) # No name lol # Password Protected Terminal echo "Please enter password
readpassword
放在until行下面,但这也不起作用
#!/bin/bash
# Author: Dom (GlitchyShadowZ)
# No name lol
# Password Protected Terminal
echo "Please enter password to continue"
str="owo"
read password
until [ $password = $str ]
do
# Password Verification
if [ $password = $str ];
then
echo "Password correct. Logging in"
else
echo "Password Incorrect. Try again."
fi
done
每次比较密码之前,您都必须先读取密码。另外,您正在检查
$password=$str
条件两次-这不是必需的。通过从循环中完全删除if
并正确移动密码,您只能检查一次。在脚本末尾登录
,如下所示:
#!/bin/bash
# Author: Dom (GlitchyShadowZ)
# No name lol
# Password Protected Terminal
echo "Please enter password to continue"
str="owo"
read password
until [ "$password" = "$str" ]
do
echo "Password Incorrect. Try again."
read password
done
echo "Password correct. Logging in"
或者在输入正确密码时,将while true
与break
在循环内部一起使用:
#!/bin/bash
# Author: Dom (GlitchyShadowZ)
# No name lol
# Password Protected Terminal
str="owo"
password=""
echo "Please enter password to continue"
while true
do
read password
# Password Verification
if [ "$password" = "$str" ];
then
echo "Password correct. Logging in"
break
else
echo "Password Incorrect. Try again."
fi
done
在这两种情况下,请确保在变量周围放置”
,因为当前在运行脚本时,如果没有键入任何内容,并且立即按下Enter键,则会出现以下情况:
line 13: [: =: unary operator expected
您需要
读取循环中的密码
,否则密码永远不会更改。