基数值太大(错误标记为"0925")

oom*_*pah 12 bash ubuntu octal

我的bash脚本中有以下逻辑:

#!/bin/bash
local_time=$(date +%H%M)

if (( ( local_time > 1430  && local_time < 2230 ) || ( local_time > 0300 && local_time < 0430 ) )); then
 # do something
fi
Run Code Online (Sandbox Code Playgroud)

我偶尔会得到标题中指定的错误(上面的任何时间都会08xx触发错误).

对于如何解决这个问题,有任何的建议吗?

我在Ubuntu 10.04 LTS上运行

[编辑]

我按照SiegeX的建议修改了脚本,现在,我收到了错误:[: 10#0910: integer expression expected.

有帮助吗?

Sie*_*geX 15

bash因为前导零而将你的数字视为八进制

man bash

前导0的常量被解释为八进制数.前导0x或0X表示十六进制.否则,数字采用[base#] n的形式,其中base是2到64之间的十进制数,表示算术基数,n是该基数中的数字.如果省略base#,则使用基数10.

要修复它,请指定base-10前缀

#!/bin/bash
local_time="10#$(date +%H%M)"

if (( ( local_time > 1430  && local_time < 2230 ) || ( local_time > 0300 && local_time < 0430 ) )); then
 # do something
fi
Run Code Online (Sandbox Code Playgroud)