我试图在shell脚本中创建一个时间戳变量,以使日志记录更容易一些。我想在脚本的开头创建变量,并让它在发出echo $timestamp时打印出当前时间。事实证明这比我想象的要困难得多。以下是我尝试过的一些方法:
timestamp="(date +"%T")"回显输出(date +"%T")
timestamp="$(date +"%T")"回显变量初始化的时间。
我尝试过的其他方法都只是细微的变化,效果并不好。有人知道我要怎么做吗?
我试图在shell脚本中创建一个时间戳变量,以使日志记录更容易一些。我想在脚本的开头创建变量,并让它在发出echo $timestamp时打印出当前时间。事实证明这比我想象的要困难得多。以下是我尝试过的一些方法:
timestamp="(date +"%T")"回显输出(date +"%T")
timestamp="$(date +"%T")"回显变量初始化的时间。
我尝试过的其他方法都只是细微的变化,效果并不好。有人知道我要怎么做吗?
当前回答
有很多答案,但找不到我想要的:
date +"%s.%3N"
返回类似1606297368.210的内容
其他回答
timestamp=$(awk 'BEGIN {srand(); print srand()}')
没有值的srand在大多数Awk实现中使用当前时间戳。
最新版本的bash不需要调用外部程序日期:
printf -v timestamp '%(%T)T'
%(…)T使用相应的参数作为UNIX时间戳,并根据括号之间的strftime格式对其进行格式化。参数-1对应于当前时间,当不会出现歧义时可以省略。
我使用的是ubuntu 14.04。
在我的系统中,正确的方法应该是date +%s。
日期+%T的输出类似于12:25:25。
这比您要求的要多一点,因此您可以根据需要定制它。
我试图在一个shell脚本中创建一个时间戳变量…
这个脚本将允许您创建一个变量。尽管我不完全确定在更改shell上下文时可重用性如何。但它会起作用。
function timestamp {
TEXT="Date:"
DATE=`date +%Y-%m-%d`
TIME=`date +%H:%M:%S`
ZONE=`date +"%Z %z"`
echo $TEXT $DATE $TIME $ZONE
}
function fulldate {
timevariable=$(timestamp)
echo $timevariable
}
echo "- Output 1:"
timestamp
echo "- Output 2:"
fulldate
echo "- Output 3:"
echo $timevariable
输出:
- Output 1:
Date: 2021-08-12 23:28:08 UTC +0000
- Output 2:
Date: 2021-08-12 23:28:08 UTC +0000
- Output 3:
Date: 2021-08-12 23:28:08 UTC +0000
我已经在GNU bash版本4.4.23(1)-release (x86_64-pc-msys)上进行了测试
如果你想获取unix时间戳,那么你需要使用:
timestamp=$(date +%s)
T会给你刚好的时间;与%H:%M:%S相同(通过http://www.cyberciti.biz/faq/linux-unix-formatting-dates-for-display/)