파일에 나열된 사용자를 위한 로그인 프로그램을 만들려고 합니다. 이름을 배열에 저장하고 존재하는지 확인하려고 하면 헤더만 반환됩니다. 따라서 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