關於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#`即可:

給出我的代碼:

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

可以較少對系統的消耗!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM