Bash 如果数字大于则失败
Bash if number greater then failing
任何人都可以向我解释为什么会失败吗? 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,该函数将按预期工作。
0111 == 73
,所以小于99.
$ echo $((0111))
73
因为正如@Koiro 在评论中所说:
Constants with a leading 0 are interpreted as octal numbers.
你应该强制执行基于 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
任何人都可以向我解释为什么会失败吗? 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,该函数将按预期工作。
0111 == 73
,所以小于99.
$ echo $((0111))
73
因为正如@Koiro 在评论中所说:
Constants with a leading 0 are interpreted as octal numbers.
你应该强制执行基于 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