如何抑制日期输出中的前导零?

How to suppress leading zero in date output?

我有这个代码:

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.

生成的日期输出中的前导零

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

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

这会抑制前导零。

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

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

Unix 上的相关 post 和 Linux 堆栈交换: