+ -
当前位置:首页 → 问答吧 → 请教一个关于shell脚本获取时间的问题

请教一个关于shell脚本获取时间的问题

时间:2011-12-17

来源:互联网

我是初学者,知道的命名、参数不多,所以要实现一个功能可能会用到在各位眼里十分笨的方法实现。

我想要获取时间,并显示为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有什么特别的? 要怎么改啊。

对了,有没有简单的办法实现这个功能?

作者: jxdz232601   发布时间: 2011-12-17

所有可能出现给变量赋值如xx=08、xx=09的形式都改成xx=10#08...
如这样:
let hh=10#$(date +%H -d "3 hour ago")

0开头表示八进制数

作者: askandstudy   发布时间: 2011-12-17

这有个别人写的shell,有兴趣你可以看看:
http://hi.baidu.com/loveyurui/blog/item/72ae4b921ff72983a877a4d1.html

作者: askandstudy   发布时间: 2011-12-17

引用 1 楼 askandstudy 的回复:

所有可能出现给变量赋值如xx=08、xx=09的形式都改成xx=10#08...
如这样:
let hh=10#$(date +%H -d "3 hour ago")

0开头表示八进制数


说得有点不太对,纠正一下,用let时才需要这样
xx=09这样是不会报错的

作者: askandstudy   发布时间: 2011-12-17

引用 3 楼 askandstudy 的回复:

引用 1 楼 askandstudy 的回复:

所有可能出现给变量赋值如xx=08、xx=09的形式都改成xx=10#08...
如这样:
let hh=10#$(date +%H -d "3 hour ago")

0开头表示八进制数


说得有点不太对,纠正一下,用let时才需要这样
xx=09这样是不会报错的


我本来也只是用2 hours ago表示2小时以前就行了的,但是系统时间是00-23小时,而最终要变成01-24小时(01表示00:00-00:59),所以我不得不用let,将小时数加1

作者: jxdz232601   发布时间: 2011-12-17

热门下载

更多