입력 파일의 단일 변수를 배열에 저장

입력 파일의 단일 변수를 배열에 저장

파일에 나열된 사용자를 위한 로그인 프로그램을 만들려고 합니다. 이름을 배열에 저장하고 존재하는지 확인하려고 하면 헤더만 반환됩니다. 따라서 NAME을 fname으로 입력하면 존재한다고 표시됩니다. 하지만 Bob을 fname으로 입력하면 '아니요'라고 표시됩니다. 각 이름과 성을 배열에 저장하는 방법은 무엇입니까?

사용자.txt

NAME            PASSWORD        DEPT    AUTH
Bob Jones       12345678        MKTG    N
Sam Smith       password        MKTG    Y
Pat Johnson     87654321        SALES   N
Dina Shore      drowssap        OPS     Y

스크립트

#!/bin/bash
FILE="users.txt" 

read -p "Please enter first and last name: " fname lname

read -a name < $FILE

for name in "${name[0]}" 

do 

    if [[ ${name[0]} = $fname ]]
    then
            echo "exist"
    else
            echo "Not Exist"
    fi
done

답변1

귀하의 질문에 답하려면 다음을 수행하십시오. read배열 요소의 첫 번째 행(제목) 단어를 읽어보세요. 다른 경로는 고려되지 않습니다. 해당 명령을 사용해 볼 수는 있지만 readarray문제에 맞지 않습니다. 청소년MMV

배열이 필요하지 않습니다. 적절한 텍스트 도구를 사용하십시오. 노력하다

#!/bin/bash
FILE="users.txt" 
read -p "Please enter first and last name: " fname lname
if grep "$fname.*$lname" $FILE
  then echo "exist"
  else echo "Not Exist"
fi

관련 정보