我有一项任务要做,我正在努力:
编写一个BASH脚本,将学生姓名和成绩从文件中读取到数组中。提示用户输入学生姓名。使用二进制搜索方法,在数组中查找名称并显示等级。如果该学生不存在,则打印一条说明该信息的消息。
以下是文件中的数据:
Ann:A
Bob:C
Cindy:B
Dean:F
Emily:A
Frank:C
Ginger:D
Hal:B
Ivy:A
Justin:F
Karen:D
所以,我首先要做的是在我的Linux操作系统中创建一个名为“学生”的文件,在我的主目录中使用上面的结构。然后在我的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中是否有可能“链接”两个数组值(例如在等效于等级数组的名称数组中,namesarray1等效于gradearray1等等)?还是我做错了什么我错过了什么?
谢谢你的帮助!
发布于 2019-11-02 10:25:04
可以这样想:您将一个学生输入到您的“学生”数组中,让我们说它是您的名字,所以您的数组索引为0。现在,您可以立即将学生分数输入另一个数组,在索引0处。您已经有一个从一个数组到另一个数组的“链接”。所以当你搜索一个学生时,你需要做的是计算索引,并把这个数字传递到一个函数中,这个函数通过你的“分数”数组,然后在for循环中使用这个参数。
psudo码
count = 0;
for(...){ ..
//student not found yet, keep going
count ++;
//student found! cool now find the grade.
gradeFind(count);
}
gradeFind(int count){
for(i=0; i<grades_size; i++){
if (i == count) { return the grade}
}
https://stackoverflow.com/questions/58673914
复制