Shell 如何减去变量中的日期值
我在创建脚本时遇到问题。我的问题是在尝试减去日期时。在我的脚本中,我以dd/mm/yyyy格式作为参数传递了一个日期,我需要与文件名中包含该日期的目录中的文件进行比较。日期可以是实际日期,也可以是作为参数传递的日期前5天。我的问题是,我如何创建一个if条件,例如,将日期作为参数和它之前的最后5天与文件名中指定的日期进行比较?我已经找遍了每一个地方,我该怎么做,什么也帮不了我 现在谢谢你Shell 如何减去变量中的日期值,shell,date,unix,compare,subtraction,Shell,Date,Unix,Compare,Subtraction,我在创建脚本时遇到问题。我的问题是在尝试减去日期时。在我的脚本中,我以dd/mm/yyyy格式作为参数传递了一个日期,我需要与文件名中包含该日期的目录中的文件进行比较。日期可以是实际日期,也可以是作为参数传递的日期前5天。我的问题是,我如何创建一个if条件,例如,将日期作为参数和它之前的最后5天与文件名中指定的日期进行比较?我已经找遍了每一个地方,我该怎么做,什么也帮不了我 现在谢谢你 Jairo。不确定您的需求,但这可能会帮助您(不是最好的解决方案) 假设文件名的格式为:file_110920
Jairo。不确定您的需求,但这可能会帮助您(不是最好的解决方案) 假设文件名的格式为: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.