2013-09-12 20 views
0

У меня возникла проблема с созданием скрипта. Моя проблема заключается в попытке вычесть дату. В моем сценарии я передаю дату в формате dd/mm/yyyy в качестве параметра, и мне нужно сравнить с файлами в каталоге с датой в имени файла. Дата может быть действительной или до 5 дней до дня, прошедшего как параметр. Мой вопрос: как я могу создать условие if, например, которое сравнивает дату как параметр и последние 5 дней до нее с датой, указанной в имени файла? Я уже искал в каждом месте, как я могу это сделать, и ничто не могло мне помочь.Как вычесть значение даты в переменной

Спасибо.

Jairo.

+1

[ Это] (http://unix.stackexchange.com/questions/24626/quickly-calculate-date-differences) должно помочь. – devnull

ответ

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. 
Смежные вопросы