值对于基数来说太大(错误标记为“0925”)
我的 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
时不时地,我会收到标题中指定的错误(任何时候 08xx
出现都会触发错误)。
关于如何解决这个问题有什么建议吗?
我在 Ubuntu 10.04 LTS 上运行
[编辑]
我按照 SiegeX 的建议修改了脚本,现在,我收到错误:[: 10#0910:需要整数表达式
。
有什么帮助吗?
I have the following logic in my bash script:
#!/bin/bash
local_time=$(date +%H%M)
if (( ( local_time > 1430 && local_time < 2230 ) || ( local_time > 0300 && local_time < 0430 ) )); then
# do something
fi
Every now and then, I get the error specified in the title (any time above 08xx
appears to trigger the error).
Any suggestions on how to fix this?
I am running on Ubuntu 10.04 LTS
[Edit]
I modified the script as suggested by SiegeX, and now, I am getting the error: [: 10#0910: integer expression expected
.
Any help?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
bash
将您的数字视为八进制,因为前导零来自
man bash
要修复此问题,请指定以 10 为基数的前缀
bash
is treating your numbers as octal because of the leading zeroFrom
man bash
To fix it, specify the base-10 prefix
遵循 的建议这个博客,这有效:
Following the advice from this blog, this works:
解决条件测试中的问题
由于多种原因(例如文件命名问题),人们可能被迫保持变量不变。如果是这种情况,请通过显式指定基数
10#
在条件测试内解决问题:Solving the issue within the conditional test
One may be forced to keep the variable as it is for a variety of reasons (e.g. file naming issues). If this is the case, solve the issue within the conditional test by explicitly specifying base
10#
: