我有一个名为emp.txt
的文件,其中包含empname
列和empid
列。现在我想要读取文件empname
和empid
,并与变量empname
&用户在登录时输入了empid
。如果两者都匹配,则应登录,否则显示消息>login invALID
。
以下是我的档案emp.txt
。
empname empid**
aruna sm223
santhosha sm224
chandan sm456
我写了一个函数,无论上面提到什么都没有。以下是我的功能。
function user () {
echo
echo -e "Enter Your Name : \c"
read usrname
echo
echo -e "Enter Your Employee-id : \c"
read empid
if [ "$usrname" = "" ] || [ "$empid" = "" ]; then
echo
echo " Please enter your name & empid."
user
fi
}
答案 0 :(得分:1)
您不需要function
和 ()
;只有()
更便携。
您可以使用
代替echo "Enter your name"; read
read -p "Enter your name: " usrname
现在,在您的功能结束时,您同时拥有usrname
和empid
。要遍历您的文件并检查它们是否与现有条目匹配,您可以使用
read -p "Name: " usrname
read -p "ID: " empid
while read -r user_entry empid_entry; do
if [[ $user_entry = $usrname && $empid_entry = $empid ]]; then
echo "Logging in"
exit # Or return from function
fi
done < emp.txt
echo "Login invalid"
这是跳过你的有效性检查,它只是为了展示如何遍历文件。一旦名称和ID匹配,我们必须在其他地方分支;如果我们到达循环的末尾,则认为尝试失败。
要确保empname
和empid**
列名称不被接受为用户名,您可以将< emp.txt
替换为< <(tail -n +2 emp.txt)
,跳过第一行
这适用于Bash 4.3。