Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当日期是变量时,如何在linux shell中增加日期_Shell_Date - Fatal编程技术网

当日期是变量时,如何在linux shell中增加日期

当日期是变量时,如何在linux shell中增加日期,shell,date,Shell,Date,我需要将日期变量不断递增15分钟。 此脚本递增当前日期 #!/bin/bash for i in {0,15,30,45} do date --date='+'$i' minutes' +"%Y%m%d%H%M%S" echo "$date" done 但我需要将初始日期设置为一年前,并在一年内不断递增。 是否可以创建datetime变量并在循环中不断向其添加分钟数 我需要这个来下载名为20190101231500.csv的文件,每个文件名都有一个15分钟后的时间戳 谢谢大家! 只需对

我需要将日期变量不断递增15分钟。 此脚本递增当前日期

#!/bin/bash
for i in {0,15,30,45}
do
  date --date='+'$i' minutes' +"%Y%m%d%H%M%S"
  echo "$date"
done
但我需要将初始日期设置为一年前,并在一年内不断递增。 是否可以创建datetime变量并在循环中不断向其添加分钟数

我需要这个来下载名为20190101231500.csv的文件,每个文件名都有一个15分钟后的时间戳


谢谢大家!

只需对代码进行最小更改:

#!/bin/sh
for i in {0,15,30,45}
do
  date --date="-$i minutes ago" +"%Y%m%d%H%M%S"
  echo "$date"
done`

您可以使用
X个月/天/年/分钟前
--date
选项从当前日期中减去。使用负数向前移动。

代码更改最少:

#!/bin/sh
for i in {0,15,30,45}
do
  date --date="-$i minutes ago" +"%Y%m%d%H%M%S"
  echo "$date"
done`
您可以使用
X个月/天/年/分钟前
--date
选项从当前日期中减去。使用负数向前移动。

使用
日期--date
计算大量日期将变得非常缓慢

# With date calculations (too) slow, only done for 10 days
d="2015-01-01"
((maxminutes=24*60))
while [ "$d" != "2015-01-10" ]; do
  d=$(date -I -d "$d + 1 day")
  for ((m=0; m<${maxminutes};m+=15)); do
     date -d "${d} + ${m} minutes" +"%Y%m%d%H%M"
  done
done 
#日期计算(太)慢,只能进行10天
d=“2015-01-01”
((最大分钟数=24*60))
而[“$d”!=“2015-01-10”];做
d=$(日期-I-d“$d+1天”)
对于((m=0;m使用
date--date
计算大量日期将变得非常缓慢

# With date calculations (too) slow, only done for 10 days
d="2015-01-01"
((maxminutes=24*60))
while [ "$d" != "2015-01-10" ]; do
  d=$(date -I -d "$d + 1 day")
  for ((m=0; m<${maxminutes};m+=15)); do
     date -d "${d} + ${m} minutes" +"%Y%m%d%H%M"
  done
done 
#日期计算(太)慢,只能进行10天
d=“2015-01-01”
((最大分钟数=24*60))
而[“$d”!=“2015-01-10”];则
d=$(日期-I-d“$d+1天”)

对于((m=0;mThank you Walter!我选择第一个解决方案,尽管我也喜欢第二个。除了日期之外,还可以指定时间开始和时间结束,这对我来说很好,但对我来说并不重要。我不理解您的时间开始愿望(只需添加一个调用
date
?).您知道特殊变量SECONDS吗?请尝试:
echo“${SECONDS}”;sleep 14;echo“${SECONDS}”
?或者使用time命令,如
time while…done>/dev/null
time awk…}>/dev/null
并查看差异!解决方案工作时:谢谢你,Walter!我选择第一个解决方案,尽管我也喜欢第二个。除了日期之外,还可以指定时间开始和时间结束,这会很好,但是对我来说不重要。我不理解您的时间开始愿望(只需添加对
date
?)的调用。您知道特殊变量SECONDS吗?请尝试:
echo“${SECONDS}”;sleep 14;echo“${SECONDS}”
?或使用time命令,如
time while….done>/dev/null
time awk…}>/dev/null
查看差异!解决方案工作时: