关于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#`即可:
给出我的代码:
OK这样问题就解决了
然后将没有执行备份的重新执行,由于我这个脚本时用find获取信息的所以对系统资源的消耗比较大,当然大家如果需要备份的目录不变的话就可以直接读取一个路径文档
可以较少对系统的消耗!
在网上查看到原来是以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获取信息的所以对系统资源的消耗比较大,当然大家如果需要备份的目录不变的话就可以直接读取一个路径文档
可以较少对系统的消耗!
相关文章推荐
- shell的含义
- shell编程之sed
- Shell脚本常用判断
- Python的Crypto模块使用:自动输入Shell中的密码
- Python的Crypto模块使用:自动输入Shell中的密码
- SHell命令总结
- shell编程之正则表达式
- 基本排序(二)插入排序(直接插入、Shell、折半)
- Linux查看系统信息的一些命令及查看已安装软件包的shell
- Bash Shell字符串操作
- Linux Shell常用技巧
- Shell日期时间和时间戳的转换
- hbase 列族优化 ,shell 管理集群
- shell路由查询脚本
- 基于Calabash-andriod的UI自动化测试(1)-环境和原理
- Xshell下中文乱码问题
- shell脚本学习笔记之sed命令用法
- 为了让vi命令也可以使用vim的配置,需要修改 vi /etc/bashrc 增加一行 alias vi='vim'此时,经过上面配置已经可以显示语法高亮了
- 也可以使用如下命令更改您的默认 Shell
- shell编程之正则表达式