我在这里写了这个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
请帮助谢谢!
答案 0 :(得分:2)
这一行:
$new1 >> PASSWORD.txt
应该是这样的:
echo "$new1" > PASSWORD.txt
您需要echo
该值进入文件。我假设你不想保留旧的价值观。为了能够在同一个文件上再次运行脚本,您应该覆盖(>
)而不是追加(>>
)。
答案 1 :(得分:1)
您尚未在某处设置PASSWORD
变量。如果您的文件名为“PASSWORD.txt”,请删除之前的$
。
答案 2 :(得分:1)
它认为你的意思
if [ "$old" != "$(cat PASSWORD.txt)" ]
没有美元符号。