仅限bash整数

时间:2013-11-23 22:33:14

标签: bash integer evaluation

我似乎无法仅允许单个整数输入。 如果有人放了abc,它就会起作用。

但如果有人输入abc123或123abc,它仍会将其视为有效整数

# input to be an integer.
validate_integer(){

    if [ !  "$#" -eq "1" ]; then
            error "Please enter one numberic value only"
            return 1
    elif [[ "$1" =~ ^[[:alpha:]]+$ ]]; then
            error "Input must be a NUMBER"
            return 1
    else
            return 0
    fi
}

1 个答案:

答案 0 :(得分:1)

更改此行:

elif [[ "$1" =~ ^[[:alpha:]]+$ ]]; then

到此:

elif ! [[ "$1" =~ ^[[:digit:]]+$ ]]; then

在那里,^[[:digit:]]+$表示字符串必须由开头到结尾的数字组成,并且长度必须为1个或更多字符。我们用!否定这一点,以处理字符串不满足此条件(不完全数字)时的情况。