shell-数字问题

在shell中,获取小时可以用

1
hour=`date +%H`

这样得到的时间如果小于10,那么就会出现01,02……09这样的数据

在shell脚本中如果用到了这样的数字的比较那么就会报错

1
[[: 08: value too great for base (error token is "08")

这是因为在shell中凡是以0开头的数字都会默认为八进制,所以需要在前面加10#来转为10进制

1
2
3
4
5
6
7
8
9
10
11
1  #!/bin/bash

2 time=`date +%H`
3 true_time=10#`expr $time - 2`

4 echo $true_time
5 if [[ $true_time -eq 8 ]];then
6 echo "ok"
7 else
8 echo "no"
9 fi