在shell脚本中获取日期

时间:2017-06-12 15:07:59

标签: arrays linux bash shell datetime

我要求从最近几天的日志文件中获取特定模式。

我试图将过去几天的日期变成一个变量,该变量可以在grep命令中替换以搜索模式。日志模式如下:

log-gr_base.log.2017-06-08.gz

但是,我收到如下错误

date: invalid date ‘=1 day ago’
date: invalid date ‘=2 day ago’
date: invalid date ‘=3 day ago’
date: invalid date ‘=4 day ago’

Shell脚本

#!/bin/sh
for ((dy=1;dy<=4;dy++))
do
dt= $(date --date ="$dy day ago" +'%Y-%m-%d')
echo $dt
done

预期结果

2017-06-11
2017-06-10
2017-06-09
2017-06-08

1 个答案:

答案 0 :(得分:0)

几点变化:

#!/bin/bash
for((dy=1;dy<=4;dy++))
do
    dt=$(date --date="$dy days ago" +"%Y-%m-%d")
    echo $dt
done

/bin/sh(对我来说是dash)并且在dash c中对于格式不起作用所以这样做:

#!/bin/sh
for dy in `seq 1 4`
do
    dt=$(date --date="$dy days ago" +"%Y-%m-%d")
    echo $dt
done