我试图在shell脚本中创建一个时间戳变量,以使日志记录更容易一些。我想在脚本的开头创建变量,并让它在发出echo $timestamp时打印出当前时间。事实证明这比我想象的要困难得多。以下是我尝试过的一些方法:
timestamp="(date +"%T")"回显输出(date +"%T")
timestamp="$(date +"%T")"回显变量初始化的时间。
我尝试过的其他方法都只是细微的变化,效果并不好。有人知道我要怎么做吗?
我试图在shell脚本中创建一个时间戳变量,以使日志记录更容易一些。我想在脚本的开头创建变量,并让它在发出echo $timestamp时打印出当前时间。事实证明这比我想象的要困难得多。以下是我尝试过的一些方法:
timestamp="(date +"%T")"回显输出(date +"%T")
timestamp="$(date +"%T")"回显变量初始化的时间。
我尝试过的其他方法都只是细微的变化,效果并不好。有人知道我要怎么做吗?
当前回答
您可以使用以下命令来完成此操作。
对于带秒的时间戳:checkDate=$(日期“+%s”)
格式化日期:checkDate = $(日期”+ Y % - % m - H % d %: % m: % S”)
其他回答
DATE=`date "+%Y%m%d"`
DATE_WITH_TIME=`date "+%Y%m%d-%H%M%S"` #add %3N as we want millisecond too
有很多答案,但找不到我想要的:
date +"%s.%3N"
返回类似1606297368.210的内容
GNU bash的时间戳格式化技巧,版本4.4.20(1)-release (x86_64-pc-linux-gnu)
echo "$(date +%Y-%m-%d_%H:%M:%S.%6N) Info >>> enter main"
输出:
2023-01-08_23:08:48.013592 Info >>> enter main
如果你想用空格替换'_',请执行以下操作(w/o '\'得到错误消息)
echo "$(date +%Y-%m-%d\ %H:%M:%S.%6N) Info >>> enter main"
echo "$(date +%Y-%m-%d\ %T.%6N) Info >>> enter main"
输出:
2023-01-08 23:10:40.692674 Info >>> enter main
如果你想获取unix时间戳,那么你需要使用:
timestamp=$(date +%s)
T会给你刚好的时间;与%H:%M:%S相同(通过http://www.cyberciti.biz/faq/linux-unix-formatting-dates-for-display/)
对于我的欧洲同胞,试试这个:
timestamp=$(date +%d-%m-%Y_%H-%M-%S)
将给出格式格式:“15-02-2020_19-21-58”
你调用这个变量并得到像这样的字符串表示
$timestamp