1

我想将下面的代码添加到我的脚本中,但它没有显示total_time值,尽管CurrentTime显示正确。在此我想将纪元时间更改为当前系统时间,然后添加 20 分钟。

CurrentTime=`date -d @$2`
echo "CurrentTime : $CurrentTime " >> ${LOGFILE}
Total_time=`"$CurrentTime" -d "+20 min"`

我该怎么做?

4

2 回答 2

0

这不起作用的原因是,当您尝试将值分配给 时$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默认格式更标准的格式可能更好。

于 2012-12-04T02:50:00.743 回答
0

像这样更改您的总时间分配:

Total_time=`date -d "$CurrentTime +20 mins"`
于 2012-12-04T01:47:13.390 回答