如何在bash脚本中比较两个日期?

Aus*_*tin 6 bash shell-script date

我正在尝试将今天的日期与文件中的最后修改日期进行比较。

DATE=$(date +"%F")

LASTMOD=$(stat $i -c %y);
LASTMOD_DATE=$(cut -d' ' -f1 <<<"$LASTMOD")

if [ "$LASTMOD_DATE" -ge "$DATE" ]; then
    printf "%-19s | " "$DATE"
else
    printf "%-19s | " "NO RECENT MOD"
fi
Run Code Online (Sandbox Code Playgroud)

目前,这不能正确比较它们,我认为这是因为 LASTMOD_DATE 实际上不是日期时间,所以我收到错误:“需要整数表达式”。

Fre*_*ddy 5

您可以使用时间戳格式date +%s-r选项。

-r, --reference=FILE
         display the last modification time of FILE
Run Code Online (Sandbox Code Playgroud)

喜欢

if [ $(date +%s -r file) -ge $(date +%s) ]; then 
    # do something
fi
Run Code Online (Sandbox Code Playgroud)