将输入文件中的单个变量存储到数组中

将输入文件中的单个变量存储到数组中

我正在尝试为文件中列出的用户创建登录程序。当我尝试将名称存储到数组并检查它们是否存在时,我只返回标头。所以如果我把 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

相关内容