【问题标题】:How to Subtract a Date value in a variable如何减去变量中的日期值
【发布时间】:2013-09-12 04:48:22
【问题描述】:

我在创建脚本时遇到问题。我的问题是尝试减去日期时。在我的脚本中,我传递了格式为 dd/mm/yyyy 的日期作为参数,我需要与文件名中包含日期的目录中的文件进行比较。日期可以是实际日期,也可以是作为参数传递的日期前 5 天。我的问题是,如何创建一个 if 条件,例如将日期作为参数以及它之前的最后 5 天与文件名中指定的日期进行比较?我已经在每个地方搜索了我该怎么做,没有什么可以帮助我。

现在谢谢。

杰罗。

【问题讨论】:

  • This 应该会有所帮助。

标签: shell date unix compare subtraction


【解决方案1】:

不确定您的要求,但这可能会对您有所帮助(不是最好的解决方案) 假设文件名格式为: file_11092013 , file_01092013

#!/bin/bash

PASSED_DATE=$1

date_diff() {
    d1=$(date -d "$1" +%s)
    d2=$(date -d "$2" +%s)
    echo $(( (d2 - d1) / 86400 ))
}

for file in `ls /home/mvaidya/test`
do
    curr_file=`echo $file | awk 'BEGIN {FS="_"} {print $NF}'`
    day1=`echo $curr_file| cut -c1-2`
    month1=`echo $curr_file| cut -c3-4`
    year1=`echo $curr_file| cut -c5-8`

    day2=`echo $PASSED_DATE| cut -c1-2`
    month2=`echo $PASSED_DATE| cut -c4-5`
    year2=`echo $PASSED_DATE| cut -c7-10`

    no_of_days=$( date_diff "$month2/$day2/$year2" "$month1/$day1/$year1" )

    if [ $no_of_days -ge 5 ] ; then
        echo "File "$file" more than 5 days old."   
    else 
        echo "File "$file" less than 5 days old."
    fi  

done

例如:

$./exp1.sh 01/09/2013
File file_11092013 more than 5 days old.

$./exp1.sh 10/09/2013
File file_11092013 less than 5 days old.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-24
    • 2017-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-03
    • 1970-01-01
    相关资源
    最近更新 更多