今天在書寫一個定時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獲取信息的所以對系統資源的消耗比較大,當然大家如果需要備份的目錄不變的話就可以直接讀取一個路徑文檔
可以較少對系統的消耗!