2014-10-11 4 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라는 파일을 가지고, 나는 이메일이 이미 존재하는 경우 확인하려면 .. 누군가 나를 도울 수 있습니까? 내가 if [ -f users.txt ];이메일이 이미 존재하는 경우 확인 - 쉘 스크립트

+0

그래서 출력은 무엇입니까? – nu11p01n73R

+0

./new_user.sh : line15 : [반복되는 전자 메일] : 정수 표현식이 필요합니다. //// 줄 15는 "if [$ a -eq $ email];" – jfbribeiro

+0

편집 내용에 주석을 달지 마십시오. 문제가있다. 주 스레드에서 항상 수행해야합니다. 고맙습니다 – nu11p01n73R

답변

1

if ISS 잘못된 구문을하고 있어요 왜 사용자, users.txt가 존재하지 않는 파일을 작성 처음으로

, 즉이다. 올바른 구문은

if [ condition ] 
then 
    body 
fi 

이므로 a=$(cat users.txt | grep "$email" | cut -d ',' -f1)은 작성한 위치에있을 수 없습니다.

$email의 내용을 확인하려면 users.txtgrep이 필요합니다. 두 번째는 다시 쓸 수 있습니다

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

fi 

그것은 무엇입니까 ??

$emailusers.txt 파일 -q에 일치하므로 일치하는 줄이 인쇄되지 않습니다.

$?은 이전 명령의 종료 상태입니다. 여기서 grep은 성공적으로 완료되면 0 값을 갖습니다.

관련 문제