【发布时间】:2013-01-10 00:31:44
【问题描述】:
我想测试我的 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 函数?
【问题讨论】:
我想测试我的 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 函数?
【问题讨论】:
测试这种表达式时必须使用双括号。
【讨论】:
== 进行模式匹配。
case "$1" in
[0-9][0-9][0-9][0-9][0-9]) echo "first arg is 5 digits" ;;
*) echo "not 5 digits" ;;
esac
【讨论】:
见CONDITIONAL EXPRESSIONSman bash:
if [[ "$1" =~ ^[0-9]{5}$ ]]; then
echo "first arg is 5 digits"
else
echo "not 5 digits"
fi
【讨论】: