你如何解释这一点?这是一个错误还是我忽略了什么?
#!/bin/bash
printf '%(%F %T)T\n' 3 2 1 0 -1 -2 -3
Run Code Online (Sandbox Code Playgroud)
1970-01-01 00:00:03
1970-01-01 00:00:02
1970-01-01 00:00:01
1970-01-01 00:00:00
2023-08-16 19:31:33
2023-08-14 22:56:58
1969-12-31 23:59:57
Run Code Online (Sandbox Code Playgroud)
只有-1和-2被定义。从man bash:
%(datefmt)T:导致 printf 输出使用 datefmt 作为 strftime(3) 的格式字符串所产生的日期时间字符串。相应的参数是一个整数,表示自纪元以来的秒数。可以使用两个特殊的参数值:-1 表示当前时间,-2 表示调用 shell 的时间。如果未指定参数,则转换的行为就像已给出 -1 一样。这是通常 printf 行为的一个例外。