使用While和IF进行验证

时间:2018-11-13 20:25:30

标签: linux bash

我正在独自学习Shell脚本。我正在尝试进行一项分配,以从用户那里获取详细信息,例如用户名,他们的个人标记,DOB,并通过邮件发送报告,并计算出详细信息,例如总计和平均值。

API_PREFIX=api

在验证标记功能中,我正在检查输入的值是否在0 -100之间(如果它是更多返回错误),然后返回提示直到正确。我该如何实现。

1 个答案:

答案 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]+$部分检查用户输入的数字是否仅仅是为了避免内部错误。
  • bash函数的输出通过 stdout echo或类似的东西传输给调用者。
  • 然后,函数内的消息应由>&2发送给 stderr

希望这会有所帮助。