2014-10-11 70 views
1
if [ -f users.txt ]; 
    a=$(cat users.txt | grep "$email" | cut -d ',' -f1) 
    then 
    if [ $a -eq $email ]; 
     then 
     echo " Your email is already registed" 
     ./new_user.sh 
    fi 
fi 

我有一個叫users.txt包含所有用戶,其中電子郵件是在第一列的列表文件,我想驗證郵件是否已經存在.. 。 有人能幫我嗎 ?驗證郵件是否已經存在 - Shell腳本

這是第一次,我創建一個用戶,該文件users.txt不存在,這就是爲什麼我做if [ -f users.txt ];

+0

那麼你得到的輸出是什麼? – nu11p01n73R 2014-10-11 11:30:07

+0

./new_user.sh:line15:[:(repeed email):expected expression expected //// line 15 is「if [$ a -eq $ email];」 – jfbribeiro 2014-10-11 11:53:35

+0

請不要評論您的編輯內容有問題。應該始終在主線程中完成。謝謝 – nu11p01n73R 2014-10-11 11:56:25

回答

1

if ISS錯誤的語法。正確的語法是

if [ condition ] 
then 
    body 
fi 

so a=$(cat users.txt | grep "$email" | cut -d ',' -f1)不能在你寫的地方。

現在如果你想檢查$emailusers.txt的存在grep只是必需的。第二個如果可以重寫

if [ -f users.txt ]; 
    grep -q "$email" users.txt 
    if (($? == 0)) 
    then 
     echo " Your email is already registed" 
     ./new_user.sh 
    fi 

fi 

它做了什麼?

grep -q "$email" users.txt匹配$emailusers.txt文件-q是安靜的,所以匹配的行不會打印。

$?是上一個命令的退出狀態,這裏的grep將在成功完成時具有值0,即當存在匹配時。

相關問題