shell 只用case输入一个百分制成绩,程序返回五级制成绩,如果输入的是其他内容则要求重新输入
时间: 2024-12-19 15:27:32 浏览: 12
在Shell脚本中,你可以创建一个简单的流程来实现这个功能。下面是一个基础的示例,它使用`read`命令获取用户的输入,并通过`case`结构检查输入是否为百分制成绩:
```bash
#!/bin/bash
# 定义转换函数
grade_conversion() {
case $1 in
[0-9][0-9]?) # 百分制成绩范围
if (( $1 >= 90 )); then
echo "优秀"
elif (( $1 >= 80 )); then
echo "良好"
elif (( $1 >= 70 )); then
echo "及格"
elif (( $1 >= 60 )); then
echo "不及格"
else
echo "未达到及格线"
fi
;;
*) # 非数字输入提示重新输入
echo "错误!请输入有效的百分制成绩。"
grade_conversion
;;
esac
}
# 循环获取用户输入并转换等级
while true; do
read -p "请输入您的百分制成绩(例如:85): " score
grade_conversion $score
done
```
在这个脚本中,用户需要连续输入分数直到输入正确的百分制数值。如果输入了非数字或超出百分制范围的内容,脚本会提示错误并重新开始询问。
相关问题
shell 利用case输入一个百分制成绩,程序返回五级制成绩,如果输入的是其他内容则要求重新输入
Shell脚本可以利用`case`结构来实现这个功能。首先,你需要创建一个脚本来接收用户输入的成绩,并根据给定的条件进行判断。这里是一个简单的示例:
```bash
#!/bin/bash
# 定义函数转换百分制到五级制
convert_to_grading() {
case $1 in
[0-9][0-9]?) # 百分制成绩范围检查
if (( $1 >= 90 )); then
echo "优秀"
elif (( $1 >= 80 )); then
echo "良好"
elif (( $1 >= 60 )); then
echo "及格"
else
echo "不及格"
fi
;;
*)
echo "请输入有效的百分制成绩!" && convert_to_grading
;;
esac
}
# 循环获取用户输入并转换
while true; do
read -p "请输入百分制成绩(例如95)或输入其他退出: " score
convert_to_grading $score
done
```
在这个脚本中,我们首先定义了一个`convert_to_grading`函数,它接受一个参数`$1`(用户的输入)。`case`语句会检查输入是否符合百分制成绩的形式。如果是,则根据分数范围返回相应的等级;如果不是,脚本会提示用户重新输入。
阅读全文