如何从terminal读取date,并与当前date进行比较

我想知道从terminal读取date和使用shell脚本比较当前date的适当方式,

我有下面的脚本,

a=`date +%Y-%m-%d` while [ 1 ] ; do echo "Enter Date" read todate if [ $todate < $a ];then break; fi echo "todate greater than curDate" done 

它没有按预期运行。 请帮帮我。

UPDATE

这是我的最终版本,

 #! /bin/bash DATE=$(date '+%s') while [ 1 ] ; do echo "Enter Date[DD MM YYYY]:" read DMY THIS=$(date -d "$Y-$M-$D" '+%s') if (( THIS < DATE )) ; then break fi done 

感谢大家!

Solutions Collecting From Web of "如何从terminal读取date,并与当前date进行比较"

从高级Bash脚本指南:

7.3。 其他比较运算符

字符串比较

 < is less than, in ASCII alphabetical order if [[ "$a" < "$b" ]] if [ "$a" \< "$b" ] Note that the "<" needs to be escaped within a [ ] construct. 

所以,你的

  if [ $todate < $a ];then 

 if [ $todate \< $a ];then 

要么

 if [[ $todate < $a ]];then 

日期有+%s格式。

  %s seconds since 1970-01-01 00:00:00 UTC 

您以秒为单位保存当前日期。 然后在第二个转换用户输入日期。 所以你可以比较。

这是解决方案:

在这个解决方案中,我将日期转换为单个整数,很明显,更大的日期将始终是比当前日期更大的整数

a = date +%Y%m%d

而[1]; 做

回声“输入日期”阅读todate回声“$ todate”>温度

 for i in 1 2 3 do y=`cut -d- -f$i temp` x=$x$y done if [ $x -lt $a ];then exit; fi echo "todate greater than curDate" 

DONE