您的位置:首页 > 运维架构 > Shell

关于shell脚本时遇value too great for base (error token is "08")

2015-08-04 11:14 901 查看
今天在书写一个定时cp脚本时遇到了一个问题,value too great for base (error token is "08")

在网上查看到原来是以0开头的数字 系统会默认识别为八进制数,所以我的 $datem-1这样的获取上个月的月份是回报:value too great for base (error token is "08")这个错误的,解决办法就是

将$datem格式或者声明称十进制,`10#$datem`-1 这样就可以了。 也就是将要转换成十进制的变量或者数字 在前面加上`10#`即可:

给出我的代码:

[root@morp shell]# vi backwebdb.sh
#!/bin/bash
#admin fengtaotao Email:23956580@qq.com
#Fri Jul  3 16:35:48 CST 2015
pathh=/web/www/morp/musicFile/
pathd=/opt2/musicFile/
datem=`date +%m`

if [ "$datem" == 01 ] ;then
datem="_12"
datey=`date +%Y`
datey=$(($datey-1))
else
datem="$((10#$datem-1))"
#       datey=`date +%Y`
echo $datem
fi
echo $datey
#echo $datem

#dird="$datey$datem"

#readd=`date +%N`.txt

#find $pathh -name $dird &>> $readd

#for i in $(cat $readd);do
#       aac=$(echo $i | awk -F "/" '{print $6"/"$7"/"}')
#       aac=${pathd}${aac}
#       cp -r $i $aac &>>dbcp.log
#done

#rm -rf $readd


OK这样问题就解决了

然后将没有执行备份的重新执行,由于我这个脚本时用find获取信息的所以对系统资源的消耗比较大,当然大家如果需要备份的目录不变的话就可以直接读取一个路径文档

可以较少对系统的消耗!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: