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

时间:2017-12-19 05:18:09

标签: bash date printf pad

我有这段代码:

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生成的日期输出中的前导零。

1 个答案:

答案 0 :(得分:2)

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

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

这会抑制前导零。

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

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

Unix上的相关文章& Linux Stack Exchange: