我有这段代码:
printf -v s '%(%S)T' -1 # grab the current second
if ((s == 0)); then
# at the top of the minute, run some code
fi
此代码在每分钟的第八和第九秒抛出错误:
bash: ((: 08: value too great for base (error token is "08")
bash: ((: 09: value too great for base (error token is "09")
我该如何纠正这个?基本上,我们需要抑制printf
生成的日期输出中的前导零。
答案 0 :(得分:2)
在格式字符串中使用-
前缀,因此:
printf -v s '%(%-S)T' -1
这会抑制前导零。
解决此问题的更通用的way是以这种方式指定Bash算术的基础,同时保持printf
命令不变:
if ((10#$s == 0)); then
Unix上的相关文章& Linux Stack Exchange: