请教一个关于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有什么特别的? 要怎么改啊。
对了,有没有简单的办法实现这个功能?
我想要获取时间,并显示为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开头表示八进制数
如这样:
let hh=10#$(date +%H -d "3 hour ago")
0开头表示八进制数
作者: askandstudy 发布时间: 2011-12-17
这有个别人写的shell,有兴趣你可以看看:
http://hi.baidu.com/loveyurui/blog/item/72ae4b921ff72983a877a4d1.html
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开头表示八进制数
所有可能出现给变量赋值如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这样是不会报错的
引用 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
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28