测试一个参数是否为一个五位数整数。

3

我想测试我的bash脚本中的参数是否为5位整数。

if [ "$1" == [0-9][0-9][0-9][0-9][0-9] ]; then
    echo "first arg is 5 digits"
else
    echo "not 5 digits"

这对我不起作用,有没有更简单的方法来做到这一点,例如使用expr函数?

3个回答

4
请参见man bash中的CONDITIONAL EXPRESSIONS部分:
if [[ "$1" =~ ^[0-9]{5}$ ]]; then
    echo "first arg is 5 digits"
else
    echo "not 5 digits"
fi

4

当测试这种类型的表达式时,您必须使用双括号。


+1. 单括号不理解 == 用于模式匹配。 - glenn jackman

0
case "$1" in
  [0-9][0-9][0-9][0-9][0-9]) echo "first arg is 5 digits" ;;
  *) echo "not 5 digits" ;;
esac

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接