请教一个关于shell脚本获取时间的问题
我是初学者,知道的命名、参数不多,所以要实现一个功能可能会用到在各位眼里十分笨的方法实现。
我想要获取时间,并显示为2小时以前的时间,例如2011121710 打印出来为11121708.我是通过如下脚本实现的:
=====================================================================
let yy=$(date +%Y -d "3 hour ago")
let mm=$(date +%m -d "3 hour ago")
let dd=$(date +%d -d "3 hour ago")
let hh=$(date +%H -d "3 hour ago")
let YY="$yy - 2000"
let MM="$mm"
let DD="$dd"
let HH="$hh + 1"
case $HH in
         1)
                 XX=01
                 ;;
         2)
                 XX=02
                 ;;
         3)
                 XX=03
                 ;;
         4)
                 XX=04
                 ;;
         5)
                 XX=05
                 ;;
         6)
                 XX=06
                 ;;
         7)
                 XX=07
                 ;;
         8)
                 XX=08
                 ;;
         9)
                 XX=09
                 ;;
	*)
		XX=$HH
esac
======================================================
功能需求很简单,但是我实现的很复杂,而且在输出结果是08和09的时候报错。其他时间都还正常。
let: hh=09: value too great for base (error token is "09")
请教下各位老手,08和09有什么特别的? 要怎么改啊。
对了,有没有简单的办法实现这个功能?
------解决方案--------------------
所有可能出现给变量赋值如xx=08、xx=09的形式都改成xx=10#08...
如这样:
let hh=10#$(date +%H -d "3 hour ago")
0开头表示八进制数