【发布时间】:2020-02-28 14:49:29
【问题描述】:
我有一个任务要做,我正在为此苦苦挣扎:
编写一个 BASH 脚本,将文件中的学生姓名和成绩读入一个数组。提示用户输入学生姓名。使用二分查找方法,在数组中查找名称并显示等级。如果学生不存在,请打印一条消息说明。
这是文件中的数据:
Ann:A
Bob:C
Cindy:B
Dean:F
Emily:A
Frank:C
Ginger:D
Hal:B
Ivy:A
Justin:F
Karen:D
所以,我首先要做的是在我的主目录中使用上述结构在我的 Linux 操作系统中创建一个名为“students”的文件。 然后在我的 BASH 脚本中,我创建了以下脚本:
#!/bin/bash
#Store from a file called "students" the first field before " : " into array
names=( $( cut -d: -f1 students ) )
#Store from a file called "students" the second field after " : " into array
grades=( $( cut -d: -f2 students ) )
echo "Enter the Student Name:"
read inputname
for i in "${names[@]}"; do
echo $i;
done
for j in "${grades[@]}"; do
echo $j;;
done
有了这些信息,我现在可以看到每个数组何时“相关”(例如,在“姓名数组”中我们有 Ann,在“等级数组”中我们有她的分数“A”,等等开)
我的问题是如何“链接”这两个信息?例如,当有人输入 Bob 时,它会自动输出“Bobs 等级为 C”之类的东西?是否可以在 BASH 中“链接”两个数组值(例如在 namesarray[0] 中等效于 gradesarray[0],namesarray[1] 等效于gradearray[1] 等等)?还是我在这里做错了什么我错过了?
感谢您的帮助!
【问题讨论】:
-
Bob在names数组中的索引与他在grades数组中的成绩索引相同。 -
顺便说一句,您正在做的是线性搜索,而不是二进制搜索。
标签: bash