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

sh/bash/dash/ksh/zsh等Shell脚本
回复
头像
zhangyanzhen
帖子: 13
注册时间: 2017-07-04 9:54
系统: ubuntu 16.04

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

#1

帖子 zhangyanzhen » 2017-08-09 0:18

#!/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
1101010111000101
1101000111010111
1110110011110100
头像
zhangyanzhen
帖子: 13
注册时间: 2017-07-04 9:54
系统: ubuntu 16.04

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

#2

帖子 zhangyanzhen » 2017-08-09 10:28

好吧,同志们,我知道了,就是因为“-l*”的原因,所以老是显示0天,把这个去掉就能显示出准确的天数了,只不过是负的。
我猜测“-l*”这个是用来修正负数的。
1101010111000101
1101000111010111
1110110011110100
头像
astolia
论坛版主
帖子: 6420
注册时间: 2008-09-18 13:11

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

#3

帖子 astolia » 2017-08-09 10:34

不知道是谁把-1看成了-l,另外那算出来的是秒数,不是天数
:em04
头像
zhangyanzhen
帖子: 13
注册时间: 2017-07-04 9:54
系统: ubuntu 16.04

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

#4

帖子 zhangyanzhen » 2017-08-09 22:29

astolia 写了:不知道是谁把-1看成了-l,另外那算出来的是秒数,不是天数
:em04

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