2010-09-29 91 views
0

我在這裏寫了這個sh腳本。它假設要做的是提示用戶輸入舊密碼,然後用「PASSWORD.txt」文件中的密碼檢查密碼(如果不是則會退出),否則如果匹配,則會要求用戶輸入新密碼兩次。然後它會檢查兩個新密碼是否相同,如果不是則它會退出,否則我應該將用戶鍵入的輸入並替換「PASSWORD.txt」文件中的文本。我的sh腳本有問題不知道爲什麼?

然後當我跑到那裏askes我舊密碼的文件我得到這個錯誤:

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

的事情是我輸入即使我輸入正確的舊密碼不匹配輸入。

這裏是低於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

謝謝所有回答該部分! – GuzzyD 2010-09-29 15:34:53

+0

現在我說這個錯誤 我試圖改變密碼爲「你好」,然後這個錯誤來了 ./renamepwd.sh:第20行:你好:命令未找到 – GuzzyD 2010-09-29 15:36:57

+0

這是一個單獨的問題。接受這個問題的正確答案,併發佈一個新問題。 – ndim 2010-09-29 15:39:19

回答

2

這條線:

$new1 >> PASSWORD.txt 

應該是這樣的:

echo "$new1" > PASSWORD.txt 

您需要echo值到文件中。我假設你不想保留舊的價值觀。爲了能夠在同一個文件上再次運行腳本,您應該覆蓋(>)而不是追加(>>)。

+0

謝謝但如果我想覆蓋文本。可以說,如果在PASSWORD.txt中舊密碼是「test」,並且我想用PASSWORD.txt文件中的「hello」替換舊密碼,那我該怎麼做?謝謝 – GuzzyD 2010-09-29 15:45:08

+0

哦,好的謝謝!抱歉沒讀過最後一頁... – GuzzyD 2010-09-29 15:46:25

1

您還沒有在某處設置PASSWORD變量。如果您的文件名爲「PASSWORD.txt」,請先刪除$

1

它認爲你的意思

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

沒有美元符號。