Bash - 如何将时间戳变量格式化为易读的格式

4
在我的脚本开头,我设置了一个变量DATE,我需要在脚本的不同部分以及不同的格式中使用它。
我的问题是使用相同的变量,但以不同的方式进行格式化:
#!/bin/bash
DATE=$(date +%s)
echo "date in timestamp format: $DATE"
echo "..."
# some other actions that need time...
echo "date start at: $(date $(DATE +%Y-%m-%d:%H:%M))"

这段代码可以运行,但会输出一个错误信息(DATE:命令未找到):

date in timestamp format: 1490884719
...
<script>.sh: line 6: DATE: command not found
date start at: Thu Mar 30 16:38:40 CEST 2017

如何消除错误?


2
你正在子shell中运行DATE。也许你想要执行echo "date start at: $(date -d"$DATE" '+%Y-%m-%d:%H:%M')" - 123
似乎也不行:日期:无效日期“1490885663” - Alg_D
1
Try -d"@$DATE" - 123
1个回答

6
使用 $(...) 尝试执行 DATE 命令,但失败了。巧合的是,在没有参数的情况下运行了 date 命令,返回当前时间(类似于原始时间)。

尝试用以下内容替换整行:

echo "日期开始于:$(date --date=@${DATE} '+%Y-%m-%d:%H:%M')"

对于 GNU date(Linux 和友好系统),使用:

echo "日期开始于:$(date -j -f '%s' ${DATE} '+%Y-%m-%d:%H:%M')"

对于 BSD date(macOS 和其他 BSDs)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接