我正在独自学习Shell脚本。我正在尝试进行一项分配,以从用户那里获取详细信息,例如用户名,他们的个人标记,DOB,并通过邮件发送报告,并计算出详细信息,例如总计和平均值。
API_PREFIX=api
在验证标记功能中,我正在检查输入的值是否在0 -100之间(如果它是更多返回错误),然后返回提示直到正确。我该如何实现。
答案 0 :(得分:0)
如何修改函数以返回经过验证的分数。然后,您可以将循环括起来,直到在函数中提供有效数字为止。
然后代码将如下所示:
#!/bin/bash
function validate_marks() {
local subject=$1
local score
while true; do
read -p "Enter ${subject}:" score
if [[ "$score" =~ ^[0-9]+$ ]] && [[ "$score" -ge 0 ]] && [[ "$score" -le 100 ]]; then
echo "$score"
return
else
echo "** Enter numbers between 0-100 **" >&2
fi
done
}
echo "Enter Marks for each subject:"
ENG=$(validate_marks "English Marks")
MATHS=$(validate_marks "Maths Marks")
SCI=$(validate_marks "Science Marks")
HIST=$(validate_marks "History Marks")
EMAIL=$(validate_marks "your Email id")
while true
创建一个无限循环,以继续请求输入,直到满足if
条件为止。"$score" =~ ^[0-9]+$
部分检查用户输入的数字是否仅仅是为了避免内部错误。echo
或类似的东西传输给调用者。>&2
发送给 stderr 。希望这会有所帮助。