0

我有这个代码:

printf -v s '%(%S)T' -1 # grab the current second
if ((s == 0)); then
  # at the top of the minute, run some code
fi

此代码在每分钟的第 8 秒和第 9 秒抛出错误:

bash: ((: 08: value too great for base (error token is "08")
bash: ((: 09: value too great for base (error token is "09")

我该如何纠正这个问题?基本上,我们需要抑制生成的日期输出中的前导零printf

4

1 回答 1

2

-在格式字符串中使用前缀,因此:

printf -v s '%(%-S)T' -1

这抑制了前导零。

解决此问题的更通用方法是以这种方式指定 Bash 算术中的基数,同时保持printf命令不变:

if ((10#$s == 0)); then

Unix 和 Linux Stack Exchange 上的相关帖子:

于 2017-12-19T05:19:56.307 回答