我想知道从终端读取日期并使用shell脚本与当前日期进行比较的适当方式
我有以下脚本,
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
它没有按预期运行。请帮帮我。
更新
这是我的最终版本,
#! /bin/bash
DATE=$(date '+%s')
while [ 1 ] ; do
echo "Enter Date[DD MM YYYY]:"
read D M Y
THIS=$(date -d "$Y-$M-$D" '+%s')
if (( THIS < DATE )) ; then
break
fi
done
谢谢大家!
答案 0 :(得分:4)
来自Advanced Bash-Scripting Guide:
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
答案 1 :(得分:2)
日期格式为+%s
。
%s seconds since 1970-01-01 00:00:00 UTC
您以秒为单位保存当前日期。然后在第二个转换用户输入日期。所以你可以比较。
答案 2 :(得分:0)
A = date +%Y%m%d
而[1];做
回显“输入日期” 阅读todate echo“$ todate”&gt;温度
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"
完成