分页: 1 / 1

尝试编写一个倒计时的脚本却遇到点小问题

发表于 : 2017-08-09 0:18
zhangyanzhen
#!/bin/bash
#Postgraduate countdown for Jessie

PATH=/bin:/sbin:/usr/bin:usr/sbin:usr/local/bin:usr/local/sbin:~/bin
export PATH

echo "This timer will try to calculate: "
echo "How many days before your postgraduate entrance examination."
read -p "Please input your examination date (YYYYMMDD ex>20170101): " dateshuru

datetianshu=$(echo $dateshuru | grep '[0-9]\{8\}')
if [ "datetianshu" == "" ];then
echo "You input the wrong date format."
exit 1
fi

declare -i datezuihou=`date --date="$dateshuru" +%s`
declare -i datexianzai=`date +%s`
declare -i datezonggong=$(($datezuihou-$datexianzai))
declare -i datetianshu=$(($datezonggong/60/60/24))

if [ "$datezonggong" -lt "0" ];then
echo "You had been examination before "$((-l*$datezonggong))" days ago"

else
declare -i datexiaoshi=$(($(($datezonggong-$datetianshu*60*60*24))/60/60))
echo "You will postgraduate after $datetianshu days and $datexiaoshi hours."


我输入20171224没问题,可以显示出时间,可是如果我输入过去的时间,它老是显示
Please input your examination date (YYYYMMDD ex>20170101): 20170805
You had been examination before 0 days ago
按道理来说不应该老是0天啊~

哪位大神可以帮忙看下哪儿出问题了吗?我是参考着一个范本做的,对“$((-l*$datezonggong))”还不是很理解,尤其是里面“-l*”这个写法没弄明白,还望大神多多指教。 :Cry

Re: 尝试编写一个倒计时的脚本却遇到点小问题

发表于 : 2017-08-09 10:28
zhangyanzhen
好吧,同志们,我知道了,就是因为“-l*”的原因,所以老是显示0天,把这个去掉就能显示出准确的天数了,只不过是负的。
我猜测“-l*”这个是用来修正负数的。

Re: 尝试编写一个倒计时的脚本却遇到点小问题

发表于 : 2017-08-09 10:34
astolia
不知道是谁把-1看成了-l,另外那算出来的是秒数,不是天数
:em04

Re: 尝试编写一个倒计时的脚本却遇到点小问题

发表于 : 2017-08-09 22:29
zhangyanzhen
astolia 写了:不知道是谁把-1看成了-l,另外那算出来的是秒数,不是天数
:em04

恩恩,今晚我也发现了,尝试着改成了数字1,OK啦~
:em06