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)
| 归档时间: |
|
| 查看次数: |
7555 次 |
| 最近记录: |