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