在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实现的当前时间戳。