【问题标题】:Getting date in shell script在 shell 脚本中获取日期
【发布时间】:2017-11-14 03:02:51
【问题描述】:

我需要从最近几天的日志文件中 grep 特定模式。

我试图将过去几天的日期转换为一个变量,该变量可以在 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

【问题讨论】:

  • --date="$dy day ago" 之间不应有空格。此外,您还有一些其他语法错误。

标签: arrays linux bash shell datetime


【解决方案1】:

变化不大:

#!/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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-09
    • 1970-01-01
    • 2017-04-17
    • 2011-07-21
    • 2014-06-27
    • 2012-04-17
    • 1970-01-01
    相关资源
    最近更新 更多