2010-09-29 6 views
0

J'ai écrit ce script sh ici. Ce qu'il est supposé faire est qu'il invite l'utilisateur à taper l'ancien mot de passe, puis vérifie le mot de passe avec le mot de passe dans le fichier "PASSWORD.txt" sinon il se fermerait, sinon il demanderait à l'utilisateur de tapez deux fois le nouveau mot de passe. Puis il vérifie si les deux nouveaux mots de passe sont les mêmes sinon il sortirait, sinon je devrais mettre l'entrée tapée par l'utilisateur et remplacer le texte dans le fichier "PASSWORD.txt".Quelque chose ne va pas avec mon script sh ne sais pas pourquoi?

Puis quand je courais le fichier où il me askes pour l'ancien mot de passe j'ai obtenu cette erreur:

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

La chose est l'entrée i dactylographié ne correspond pas même si je tapais l'ancien mot de passe correct.

Voici le scirpt ci-dessous:

#!/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 

S'il vous plaît aider merci!

+0

merci à tous pour répondre à cette partie! – GuzzyD

+0

maintenant j'ai eu cette erreur en disant je suis en train de changer le mot de passe « bonjour » cette erreur est venu ./renamepwd.sh: ligne 20: bonjour: command not found – GuzzyD

+0

C'est une question distincte. Acceptez une réponse correcte à celle-ci et postez une nouvelle question. – ndim

Répondre

2

Cette ligne:

$new1 >> PASSWORD.txt 

devrait ressembler à ceci:

echo "$new1" > PASSWORD.txt 

Vous devez echo la valeur dans le fichier. Je suppose que vous ne voulez pas garder de vieilles valeurs. Pour pouvoir exécuter à nouveau votre script sur le même fichier, vous devez probablement remplacer (>) plutôt que d'ajouter (>>).

+0

merci mais que faire si je veux écraser le texte. disons si l'ancien mot de passe est "test" dans le fichier PASSWORD.txt et que je veux remplacer l'ancien mot de passe par "bonjour" dans le fichier PASSWORD.txt, comment faire? merci – GuzzyD

+0

ohh ok merci! désolé n'a pas lu le dernier bit ... – GuzzyD

1

Vous n'avez pas défini la variable PASSWORD quelque part. Si votre fichier s'appelle "PASSWORD.txt", supprimez le $ avant.

1

Il pense que vous vouliez dire

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

sans le signe dollar.

Questions connexes