我遇到的问题是使用自定义日期格式,例如date +%y%j.%H%M%S
,
我想要的是在此日期仅在系统的当前日期添加15分钟。这样我就可以用来进一步计算我的过程了。
我尝试使用以下代码 -
$uprBond=`date +%y%j.%H%M%S`
$ echo $uprBond
16079.031135
$ date -d "$(uprBond) + 5 minutes" +%y%j.%H%M%S
op> bash:uprBond:找不到命令
16079.035920
我在通过上述日期格式时失败了,任何人都可以帮忙解决这个问题。
请注意,下面是当我使用日期函数而不是定义的日期变量时,代码片段正在工作,即$ uprBond (我不想使用预定义的日期,因为我们有一些旧格式相同需要添加分钟的日期。
date +%y%j.%H%M%S -d "`date` + 5 minutes";
op> 16079.040724
答案 0 :(得分:2)
使用GNU日期,GNU bash 4及其Parameter Expansion:
#!/bin/bash
uprBond="$(date +%y%j.%H%M%S)"
year="20${uprBond:0:2}"
doy="${uprBond#${uprBond:0:2}}"
doy="${doy%.*}"
time="${uprBond#*.}"
time="${time:0:2}:${time:2:2}:${time:4:2}"
in5min=$(date -d "${year}-01-01 +${doy} days -1 day +5 minutes ${time}" "+%y%j.%H%M%S")
echo "now: $uprBond"
echo "in 5min: $in5min"
输出:
now: 16079.145026 in 5min: 16079.145526