在bash脚本中创build时间戳variables

我正在试图在shell脚本中创build一个时间戳variables,使日志logging更容易一些。 我想在脚本的开始处创buildvariables,并在发出echo $timestamp时打印出当前时间。 然后我想,certificate是更困难的。 以下是我尝试过的一些事情:

timestamp="(date +"%T")" echo打印出来(date +"%T")

timestamp="$(date +"%T")" echo打印variables初始化的时间。

我试过的其他东西只是轻微的变化,没有更好的工作。 有谁知道如何完成我想要做的?

为了获得当前的时间戳,而不是定义固定variables的时间,技巧是使用一个函数而不是一个variables:

 #!/bin/bash # Define a timestamp function timestamp() { date +"%T" } # do something... timestamp # print timestamp # do something else... timestamp # print another timestamp # continue... 

如果您不喜欢由%T说明符给出的格式,则可以合并按date接受的其他时间转换说明符。 对于GNU date ,您可以在以下官方文档中find这些说明符的完整列表: https : //www.gnu.org/software/coreutils/manual/html_node/Time-conversion-specifiers.html#Time-conversion-specifiers

如果你想获得unix时间戳,那么你需要使用:

 timestamp=$(date +%s) 

%T会给你时间; 与%H:%M:%S相同%H:%M:%S (通过http://www.cyberciti.biz/faq/linux-unix-formatting-dates-for-display/

使用命令replace:

 timestamp=$( date +%T ) 
 DATE=`date "+%Y%m%d"` DATE_WITH_TIME=`date "+%Y%m%d-%H%M%S"` #add %3N as we want millisecond too 

您可以使用

 timestamp=`date --rfc-3339=seconds` 

这以2014-02-01 15:12:35-05:00的格式提供

反码( ` )字符将导致它们之间的内容被评估,并将结果包含在行中。 date --help有其他选项。

 timestamp=$(awk 'BEGIN {srand(); print srand()}') 

没有值的srand使用大多数Awk实现的当前时间戳。