当前位置: 技术问答>linux和unix
请教一个关于shell脚本获取时间的问题
来源: 互联网 发布时间:2017-01-25
本文导语: 我是初学者,知道的命名、参数不多,所以要实现一个功能可能会用到在各位眼里十分笨的方法实现。 我想要获取时间,并显示为2小时以前的时间,例如2011121710 打印出来为11121708.我是通过如下脚本实现的: =======...
我是初学者,知道的命名、参数不多,所以要实现一个功能可能会用到在各位眼里十分笨的方法实现。
我想要获取时间,并显示为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有什么特别的? 要怎么改啊。
对了,有没有简单的办法实现这个功能?
我想要获取时间,并显示为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开头表示八进制数
如这样:
let hh=10#$(date +%H -d "3 hour ago")
0开头表示八进制数