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

您需要
读取循环中的密码
,否则密码永远不会更改。