我的sh脚本有问题不知道为什么?

时间:2010-09-29 15:27:23

标签: linux bash scripting shell

我在这里写了这个sh脚本。它假设要做的是它提示用户键入旧密码,然后用“PASSWORD.txt”文件中的密码检查密码,如果不能退出,否则如果匹配则会要求用户输入两次新密码。然后它检查两个新密码是否相同,如果不是它将退出,否则我应该输入用户输入的输入并替换“PASSWORD.txt”文件中的文本。

然后,当我运行文件时,它要求我输入旧密码,我收到了这个错误:

Please Enter teh old passsword:
test
cat: .txt: No such file or directory
The password doesn't match![root@guzzy ~]#

即使输入了正确的旧密码,输入我输入的内容也不匹配。

以下是scirpt:

#!/bin/sh

clear

echo -e "Please Enter the old password:"

read old

if [ "$old" != "$(cat $PASSWORD.txt)" ]

    then

        echo -n "The password doesn't match!"

        exit

    else

        echo -n "The old password matches!"

        echo -n "Please Enter New password:"

        read new1

        echo -n "Please Enter New password again:"

        read new2

        if [ "$new1" != "$new2" ]

            then

                echo -n "The new passwords don't match!"

                exit

            else

                $new1 >> PASSWORD.txt

                echo -n "The new password has been saved!"

        fi
fi

请帮助谢谢!

3 个答案:

答案 0 :(得分:2)

这一行:

$new1 >> PASSWORD.txt

应该是这样的:

echo "$new1" > PASSWORD.txt

您需要echo该值进入文件。我假设你不想保留旧的价值观。为了能够在同一个文件上再次运行脚本,您应该覆盖(>)而不是追加(>>)。

答案 1 :(得分:1)

您尚未在某处设置PASSWORD变量。如果您的文件名为“PASSWORD.txt”,请删除之前的$

答案 2 :(得分:1)

它认为你的意思

if [ "$old" != "$(cat PASSWORD.txt)" ]

没有美元符号。