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

今天在书写一个定时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#`即可:

给出我的代码:

[[email protected] 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获取信息的所以对系统资源的消耗比较大,当然大家如果需要备份的目录不变的话就可以直接读取一个路径文档

可以较少对系统的消耗!

时间: 2024-10-17 21:00:56

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

执行shell脚本时提示bad interpreter:No such file or directory的解决办法

故障现象:在终端直接cd /var正常,在shell脚本中执行则报错.原因是脚本是在windows平台下写的,换行符与Linux不同,造成脚本不能正确执行 出现bad interpreter:No such file or directory(没有那个文件或目录)的原因,是文件格式的问题.这个文件是在Windows下编写的.换行的方式与Unix不一样,但是在vim下面如果不Set一下又完全看不出来. 问题分析:1.将windows 下编写好的SHELL文件,传到linux下执行,提示出错.2.出

Linux问题:Crontab 执行shell脚本时相对路径的问题,不能识别。

问题描述:在linux中的直接执行shell脚本可以用相对路径找到文件,但是如果通过计划任务crontab执行shell脚本时,却不能通过相对路径找到文件! 例子: shell脚本文件代码~ #! /bin/sh Logfile = './1.txt'; date >> $Logfile; echo '------'; 直接执行shell脚本,可以在1.txt文件中看到执行结果,但是如果用crontab计划任务去执行,却在1.txt中看不到执行结果.换成绝对路径就可以,代码如下 #! /bin

写hive sql和shell脚本时遇到几个蛋疼的问题!

错误一: Hive的where后不能用字段的别名, 错误二: hive的groupby中不能用自己定义函数,否则报错(用嵌套select取代) 错误三: 运行:$ ./hive_game_operationstatis5.sh时,报错信息例如以下: ./hive_game_operationstatis5.sh:line 11: [: missing `]' ./hive_game_operationstatis5.sh:line 17: /tmp/statis_activitysourcest

解决使用crontab执行shell脚本时出现乱码情况

自己编写了一个shell脚本来维护测试环境,使用了crontab调度让其定时执行,结果遇到了乱码问题,脚本在shell环境下直接运行没有问 题. 结论是crontab执行时不会携带用户的环境变量,缺失一些系统变量,碰到中文就乱码.需要在脚本里额外添加缺失的环境变量,针对中文问题,需要声明 LANG参数 在脚本开头增加:LANG="en_US.UTF-8"export LANG 设置的编码要和系统设置的一致,具体可以到/etc/sysconfig/i18n 查看对应的环境变量.

调用shell脚本时,获取脚本的当前目录

写shell脚本,一般需要把脚本的当前目录作为工作目录,如何获取当前脚本的目录呢?在执行脚本中如何取得脚本所在的目录,分两种情况: 如果脚本当前路径下执行脚本,那么直接pwd取得绝对路径 而如果是从其他目录来调用脚本的情况,需要先cd到脚本所在目录,再取得脚本所在的绝对路径提供一下两种方法:第一种稍微繁琐: getCurPath() { if [ "` dirname "$0" `" = "" ] || [ "` dirname &qu

RHEL环境下调试Shell脚本时遇到字符串转换整数的问题

字符串转整型!这种需求应该在编程语言里很常见,Shell里就太麻烦了.有人问为什么要转换?我遇到的问题是参数数量$#需要进行整型运算,而$#取出来的却是字符串,以下为证: if [ $# != 1 ] ; then......fi这里只能用!=,=,==字符串的比较符,而使用-eq,-lt这些整数比较符就报错了.需要用来做运算就必需转换为整型,在网上查了半天然后问了一大圈朋友,得到的方法却是这样的i=`expr $# + 0 `这种方法确实有点搞笑了,但好象真的没有其它更好的办法了! 还要注意的

jenkins:执行远程shell脚本时,脚本没有生效

问题: jenkins远程部署一台机器时,jenkins构建显示成功,但是查看服务日志却没有真正执行的sh run.sh脚本,导致服务并没有启动 解决: 只需要在命令最上方加上source /etc/profile就可以了 参考:https://blog.csdn.net/y6300023290/article/details/86246463 原文地址:https://www.cnblogs.com/gcgc/p/10823775.html

debian下使用shell脚本时出现了 declare:not found 解决方法

问题:出现declare:not found的提示 解决:原来,UBUNTU用的是dash(后来证明这个其实这个不是错误的原因:从#!/bin/bash到#!/bin/dash,依旧无法运行,在这写出这一点只为引起以后的注意) 只需要用sudo dpkg-reconfigure dash指令 然后在出现的菜单中按Tab键选择NO 再重新运行即可

shell脚本加密

#shc是一个专业的加密shell脚本的工具.它的作用是把shell脚本转换为一个可执行的二进制文件,这个办法很好的解决了脚本中含有IP.密码等不希望公开的问题.http://www.datsi.fi.upm.es/~frosal/sources/ shc的官网下载地址 wget http://www.datsi.fi.upm.es/~frosal/sources/shc-3.8.9.tgztar -xf shc-3.8.9.tgzcd shc-3.8.9mkdir -pv /usr/local