如何检查阵列的范围?

时间:2016-07-24 20:30:16

标签: arrays bash

我需要检查用户输入的范围(第一个参数)是否在8到16之间。 我得到的是这个

#!/bin/bash
count=$1
if ! ((${#count[@]} == 8 || ${#count[@]} == 9 || ${#count[@]} == 10 || ${#count[@]} == 11 || ${#count[@]} == 12 || ${#count[@]} == 13 || ${#count[@]} == 14 || ${#count[@]} == 15 || ${#count[@]} == 16));then
echo "Error - not in range [8-16] symbols"
else
echo "good"
fi

我使用数组,但它不起作用。我用“if语句”尝试了不同的语法,但仍然没有。有没有其他方法来检查第一个参数的范围,因为我的方式看起来很愚蠢?

2 个答案:

答案 0 :(得分:1)

使用${#1}获取参数的长度,然后使用bash算术比较运算符(()),在这种情况下检查整数的范围是否介于8和16:

((count>=8 && count<=16))

因此您的脚本可以重写为:

#!/bin/bash
count=${#1}
if ! ((count>=8 && count<=16)); then
    echo "Error - not in range [8-16] symbols"
else
    echo "good"
fi

答案 1 :(得分:0)

您还可以使用正则表达式来检查输入的长度:

if [[ $1 =~ .{8,16} ]]; then
    echo "good"
else
    echo "Error - not in range [8-16] symbols"
fi