命令日期脚本shell bsh / ksh

时间:2012-08-03 10:07:40

标签: bash shell date scripting solaris

我需要帮助。 我制作了一个shell脚本,你以YYYYMMDD格式传递3天之前的日期并告诉我它是否正确。 我的问题是。我能在3天内减去日期命令吗? 感谢。

3 个答案:

答案 0 :(得分:2)

你可以测试:

 DATE="20120803"
 date -d @$(( `date -d "$DATE" +%s` - (3*24*60*60) ))

答案 1 :(得分:1)

用于花哨的解决方案:

INPUT="20120803"
INPUT_SECONDS=$(date -d "$INPUT" +%s)
THREEDAYSAGO_SECONDS=$(date -d "3 days ago" "+%s")

if [ $INPUT_SECONDS -lt $THREEDAYSAGO_SECONDS ]; then
    echo "too early :("
fi

答案 2 :(得分:0)

虽然您可以使用date命令执行此操作(请参阅Guillame's excellent answer),但考虑使用Perl等脚本语言来更有效地执行更复杂的操作可能是值得的。

e.g。请参阅this SO回答,使用PerlDateTime.pm模块:

use DateTime;
my $date = DateTime->now;
$date->subtract(days => 3);
print $date->ymd;