我试图在shell脚本中创建一个时间戳变量,以使日志记录更容易一些 . 我想在脚本的开头创建变量,并在我发出 echo $timestamp
时打印出当前时间 . 事实证明,这比我想象的要困难得多 . 以下是我尝试过的一些事情:
timestamp="(date +"%T")"
echo打印出 (date +"%T")
timestamp="$(date +"%T")"
echo打印变量初始化的时间 .
我尝试过的其他事情只是轻微的变化,没有任何改善 . 有谁知道如何完成我想要做的事情?
8 回答
为了获得当前时间戳而不是定义固定变量的时间,诀窍是使用函数和 not 变量:
如果您不喜欢
%T
说明符给出的格式,则可以组合date
接受的其他时间转换说明符 . 对于GNUdate
,您可以在官方文档中找到这些说明符的完整列表:https://www.gnu.org/software/coreutils/manual/html_node/Time-conversion-specifiers.html#Time-conversion-specifiers如果你想获得unix时间戳,那么你需要使用:
%T
会给你一点时间;与%H:%M:%S
相同(通过http://www.cyberciti.biz/faq/linux-unix-formatting-dates-for-display/)使用命令替换:
您可以使用
这提供
2014-02-01 15:12:35-05:00
格式反向标记( ``` )字符将导致它们之间的内容被评估并将结果包含在该行中 .
date --help
还有其他选择 .ISO 8601格式(
2018-12-23T12:34:56
)比UNIX时间戳更具可读性 . 但是在某些操作系统上,文件名中不能包含:
. 因此我建议使用这样的东西:您可以使用以下命令以此格式获取时间戳:
这是我见过许多应用程序使用的格式 . 另一个好处是,如果你的文件名以此开头,你可以按字母顺序对它们进行排序,它们将按日期排序 .
我使用的是ubuntu 14.04 .
我系统中的正确方法应该是
date +%s
.date +%T
的输出类似于12:25:25
.没有值的srand使用大多数Awk实现的当前时间戳 .