任何人都可以向我解释为什么会失败吗? 0111大于99但我没有收到无效的数据库消息。
db=0111
echo $db
£ Verify db is within the correct range
if [[ $db -lt 0 ]] || [[ $db -gt 99 ]]; then
echo "Invalid database"
fi
如果我将db更改为db = 111或甚至db = 01111,则该函数按预期工作。
答案 0 :(得分:2)
因为正如@Koiro在评论中所说:
前导0的常量被解释为八进制数。
你应该强制执行基于10的算术
db=0111
echo $db
# Verify db is within the correct range
if [[ 10#$db -lt 0 ]] || [[ 10#$db -gt 99 ]]; then
echo "Invalid database"
fi
打印
0111
Invalid database
答案 1 :(得分:1)
0111 == 73
,因此它小于99。
$ echo $((0111))
73