我想将下面的代码添加到我的脚本中,但它没有显示total_time
值,尽管CurrentTime
显示正确。在此我想将纪元时间更改为当前系统时间,然后添加 20 分钟。
CurrentTime=`date -d @$2`
echo "CurrentTime : $CurrentTime " >> ${LOGFILE}
Total_time=`"$CurrentTime" -d "+20 min"`
我该怎么做?
我想将下面的代码添加到我的脚本中,但它没有显示total_time
值,尽管CurrentTime
显示正确。在此我想将纪元时间更改为当前系统时间,然后添加 20 分钟。
CurrentTime=`date -d @$2`
echo "CurrentTime : $CurrentTime " >> ${LOGFILE}
Total_time=`"$CurrentTime" -d "+20 min"`
我该怎么做?
这不起作用的原因是,当您尝试将值分配给 时$Total_time
,您的$CurrentTime
变量已经设置为时间。它不再是命令,而是命令结果的字符串。
每次要计算新日期时,都需要重新调用`date`
命令。这就是 Guru 的回答为您提供的,尽管他没有解释原因。
如果您需要创建一个应用修饰符的“基准”日期,您仍然可以这样做,但我建议使用稍微不同的表示法:
#!/bin/bash
start=$(date '+%s')
# do stuff
sleep 20
duration=$((`date '+%s'` - $start))
然后,您可以将其$duration
用作其他计算的更简单基础,并且可以将其与相对日期一起使用:
printf "[%s] Start of job\n" "$(date -d @$start '+%Y-%m-%d %T')"
...
printf "[%s] End of job\n" "$(date -d @"$((start + duration))" '+%Y-%m-%d %T')"
将日志文件格式化为比date
默认格式更标准的格式可能更好。
像这样更改您的总时间分配:
Total_time=`date -d "$CurrentTime +20 mins"`