在Linux bash shell脚本中比较两个日期

时间:2018-10-18 16:12:13

标签: linux bash scripting

我正在尝试比较两个日期。系统日期与文件日期。我遇到麻烦了,我得到的错误是:

  

./ hello.sh:第25行:[10-18-2018:未找到命令

我也尝试过用=,==,-eq。

#Setting variable
now=$(date +"%m-%d-%Y")
#Testing variable        
echo "Current System Date: $now"
#Setting variable        
filedate=$(date -r hello.sh "+%m-%d-%Y")
#Testing variable        
echo "hello.sh date: $filedate"

if [$now -ge  $filedate]
then
echo This statement works
else
echo This statement didnt work
fi

1 个答案:

答案 0 :(得分:0)

只需进行一些简单的语法修改:

#!/bin/bash

#Setting variable
now=$(date +"%m-%d-%Y")
#Testing variable
echo "Current System Date: $now"
#Setting variable
filedate=$(date -r hello.sh "+%m-%d-%Y")
#Testing variable
echo "hello.sh date: $filedate"

if [ $now ==  $filedate ]
then
    echo "This statement works"
else
    echo "This statement didnt work"
fi
  • if中,您必须在[之后和]之前放置空格
  • 您正在比较文本,因此-ge不起作用。 “-”比较适用于数字。在这里您要使用==来比较文本。
  • 对我来说反射,我在回显文本周围放了"

这将适用于日期相同的情况。如果需要“大于”或“小于”,则将日期以时间戳格式(+%s)进行比较。然后,您可以使用-ge或其他相同类型的东西。