日期:2014-05-16  浏览次数:20705 次

请教一个关于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开头表示八进制数