2014-02-13 30 views
2

我在論壇上看到,問題是我創建八進制而不是十進制,但我無法找到在哪裏更改我的代碼來解決這個問題。價值太大基地(錯誤代幣是「08」)bash

This is part of my code: 
dd=1234567890aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ 
ddate=$(exiv2 "${i}"|grep timestamp) 
SPEC=$ddate 
read X X YEAR MONTH DAY HOUR MINUTE SECOND <<<${SPEC//:/ } 
d1=${YEAR:2} 
d2=${dd:(MONTH-1):1} 
d3=${dd:(DAY-1):1} 
d4=${dd:(HOUR-1):1} 
d5=${dd:(MINUTE-1):1} 
d6=${dd:(SECOND-1):1} 
d7=0 

謝謝你的幫助!

+0

可以做什麼回聲'回聲 「$ SPEC」 | cat -vte'並在此處顯示其內容。 – anubhava

+0

可能重複的[bash:值太大了基地(錯誤標記是「0925」)](http://stackoverflow.com/questions/5455779/bash-value-too-great-for-base-error-token-是 - 0925) – devnull

回答

5

告訴bash中,你的變量是小數,而不是八進制

d2=${dd:(10#$MONTH-1):1} 
d3=${dd:(10#$DAY-1):1} 
d4=${dd:(10#$HOUR-1):1} 
d5=${dd:(10#$MINUTE-1):1} 
d6=${dd:(10#$SECOND-1):1} 
+0

這確實是我一直在尋找的把戲。我很困惑把10#放在哪裏。萬分感謝! – Helfenstein