我需要检查用户输入的范围(第一个参数)是否在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语句”尝试了不同的语法,但仍然没有。有没有其他方法来检查第一个参数的范围,因为我的方式看起来很愚蠢?
答案 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