编写一个shell脚本该姓名已经存在,请重新输入学生姓名
时间: 2024-02-17 22:03:48 浏览: 42
好的,以下是一个简单的shell脚本,可以检查输入的姓名是否已经存在,如果存在则提示重新输入。
```shell
#!/bin/bash
# 模拟已经存在的学生姓名
existing_name="张三"
while true
do
# 读取用户输入
read -p "请输入学生姓名: " name
# 检查姓名是否已经存在
if [ "$name" = "$existing_name" ]
then
echo "该姓名已经存在,请重新输入学生姓名。"
else
echo "输入的姓名为: $name"
break
fi
done
```
在上面的脚本中,我们使用了一个 `while` 循环来不断读取用户输入的姓名,然后检查是否已经存在。如果存在,则提示用户重新输入,否则打印输入的姓名并结束循环。注意,这里只是一个简单的示例,实际应用中可能需要根据具体情况进行修改。
相关问题
shell脚本编写学生选课管理系统
好的,下面是一个用shell脚本编写的简单学生选课管理系统。
首先,我们需要创建两个文件:student.txt和course.txt。student.txt文件包含每个学生的姓名、学号和所选课程等基本信息,每个学生信息占据一行,不同字段之间用逗号分隔。course.txt文件包含每门课程的课程号、课程名和教师名等基本信息,每门课程信息占据一行,不同字段之间用逗号分隔。
接下来,我们可以编写一个shell脚本来实现学生选课管理系统。该脚本可以循环执行以下操作:
1. 显示菜单,让用户选择要执行的操作,例如选课、退课或查看已选课程等。
2. 根据用户选择的操作,执行相应的命令。例如,如果用户选择选课,则提示用户输入学生学号和要选的课程号,并将该信息添加到student.txt文件中;如果用户选择退课,则提示用户输入学生学号和要退的课程号,并从student.txt中删除该学生的该门课程信息。
3. 循环执行以上两个步骤,直到用户选择退出系统。
下面是一个简单的示例代码,可以作为参考:
```shell
#!/bin/bash
while true
do
echo "学生选课管理系统"
echo "1. 选课"
echo "2. 退课"
echo "3. 查看已选课程"
echo "0. 退出系统"
read -p "请选择要执行的操作:" choice
case $choice in
1)
read -p "请输入学生学号:" id
read -p "请输入要选的课程号:" course_id
course_name=$(grep "^$course_id" course.txt | cut -d ',' -f 2)
if [ -z "$course_name" ]; then
echo "无效的课程号,请重新输入!"
else
sed -i "/^$id,/d" student.txt
echo "$id,$course_id,$course_name" >> student.txt
echo "选课成功!"
fi
;;
2)
read -p "请输入学生学号:" id
read -p "请输入要退的课程号:" course_id
sed -i "/^$id,$course_id,/d" student.txt
echo "退课成功!"
;;
3)
read -p "请输入学生学号:" id
grep "^$id," student.txt | cut -d ',' -f 2,3
;;
0)
echo "感谢使用学生选课管理系统,再见!"
exit 0
;;
*)
echo "无效的选择,请重新输入!"
;;
esac
done
```
该脚本使用while循环不断显示菜单,让用户选择要执行的操作,然后根据用户的选择执行相应的命令。例如,如果用户选择选课,则提示用户输入学生学号和要选的课程号,并将该信息添加到student.txt文件中;如果用户选择退课,则提示用户输入学生学号和要退的课程号,并从student.txt中删除该学生的该门课程信息。
需要注意的是,该脚本中使用了sed和grep等Linux命令,因此需要在Linux系统中运行。如果您使用的是Windows系统,则需要先安装Cygwin或Git Bash等类Unix环境,才能运行该脚本。
希望这个示例可以帮助您了解如何用shell脚本编写学生选课管理系统。如果您有任何疑问或需要进一步的帮助,请随时告诉我。
用shell脚本编写学生成绩管理系统
学生成绩管理系统可以使用Shell脚本编写。下面是一个简单的示例:
```shell
#!/bin/bash
# 初始化学生信息数组
students=("张三" "李四" "王五")
# 初始化学生成绩数组
scores=(80 90 85)
# 显示菜单选项
function display_menu {
echo "学生成绩管理系统"
echo "1. 显示所有学生信息"
echo "2. 添加学生信息"
echo "3. 删除学生信息"
echo "4. 修改学生成绩"
echo "5. 退出"
}
# 显示所有学生信息
function display_students {
echo "学生信息:"
for ((i=0; i<${#students[@]}; i++)); do
echo "${students[$i]}: ${scores[$i]}"
done
}
# 添加学生信息
function add_student {
read -p "请输入学生姓名: " name
read -p "请输入学生成绩: " score
students+=("$name")
scores+=("$score")
echo "添加成功!"
}
# 删除学生信息
function delete_student {
read -p "请输入要删除的学生姓名: " name
index=-1
for ((i=0; i<${#students[@]}; i++)); do
if [[ "${students[$i]}" == "$name" ]]; then
index=$i
break
fi
done
if [[ $index -ge 0 ]]; then
unset students[$index]
unset scores[$index]
students=("${students[@]}")
scores=("${scores[@]}")
echo "删除成功!"
else
echo "学生不存在!"
fi
}
# 修改学生成绩
function modify_score {
read -p "请输入要修改成绩的学生姓名: " name
index=-1
for ((i=0; i<${#students[@]}; i++)); do
if [[ "${students[$i]}" == "$name" ]]; then
index=$i
break
fi
done
if [[ $index -ge 0 ]]; then
read -p "请输入新的学生成绩: " score
scores[$index]=$score
echo "修改成功!"
else
echo "学生不存在!"
fi
}
# 主程序
while true; do
display_menu
read -p "请输入选项: " option
case $option in
1)
display_students;;
2)
add_student;;
3)
delete_student;;
4)
modify_score;;
5)
break;;
*)
echo "无效选项!";;
esac
done
```
这个脚本实现了以下功能:
- 显示所有学生信息:显示每个学生的姓名和成绩。
- 添加学生信息:允许输入新的学生姓名和成绩,并将其添加到数组中。
- 删除学生信息:根据学生姓名删除相应的学生记录。
- 修改学生成绩:根据学生姓名修改对应的成绩。