我试图在shell脚本中创建一个时间戳变量,以使日志记录更容易一些。我想在脚本的开头创建变量,并让它在发出echo $timestamp时打印出当前时间。事实证明这比我想象的要困难得多。以下是我尝试过的一些方法:
timestamp="(date +"%T")"回显输出(date +"%T")
timestamp="$(date +"%T")"回显变量初始化的时间。
我尝试过的其他方法都只是细微的变化,效果并不好。有人知道我要怎么做吗?
我试图在shell脚本中创建一个时间戳变量,以使日志记录更容易一些。我想在脚本的开头创建变量,并让它在发出echo $timestamp时打印出当前时间。事实证明这比我想象的要困难得多。以下是我尝试过的一些方法:
timestamp="(date +"%T")"回显输出(date +"%T")
timestamp="$(date +"%T")"回显变量初始化的时间。
我尝试过的其他方法都只是细微的变化,效果并不好。有人知道我要怎么做吗?
当前回答
我使用的是ubuntu 14.04。
在我的系统中,正确的方法应该是date +%s。
日期+%T的输出类似于12:25:25。
其他回答
为了获得当前的时间戳,而不是固定变量定义的时间,诀窍是使用函数而不是变量:
#!/bin/bash
# Define a timestamp function
timestamp() {
date +"%T" # current time
}
# do something...
timestamp # print timestamp
# do something else...
timestamp # print another timestamp
# continue...
如果不喜欢%T指示符给出的格式,可以结合日期接受的其他时间转换指示符。对于GNU日期,您可以在官方文档中找到这些说明符的完整列表:https://www.gnu.org/software/coreutils/manual/html_node/Time-conversion-specifiers.html#Time-conversion-specifiers
对于我的欧洲同胞,试试这个:
timestamp=$(date +%d-%m-%Y_%H-%M-%S)
将给出格式格式:“15-02-2020_19-21-58”
你调用这个变量并得到像这样的字符串表示
$timestamp
你可以使用
timestamp=`date --rfc-3339=seconds`
发布格式为2014-02-01 15:12:35-05:00
反勾号(')字符将导致它们之间的内容被计算,并将结果包含在该行中。约会——帮助有其他选择。
有很多答案,但找不到我想要的:
date +"%s.%3N"
返回类似1606297368.210的内容
您可以使用以下命令来完成此操作。
对于带秒的时间戳:checkDate=$(日期“+%s”)
格式化日期:checkDate = $(日期”+ Y % - % m - H % d %: % m: % S”)