bash等で文字列から切り出した数字を演算して他の数字を作るときの注意
数字として扱うときに頭に0が付いているときは8進数を意味する!
このことすっかり忘れてて大量にJob流した後エラーを捨ててて後になって気がついた
どっかに書いておかないと忘れちゃう(´・ω・`)..ので書いておくw
ダメなケース
A="08"
B="01"
printf "%02d" $(($A + $B))
bash: 08: value too great for base (error token is "08")
そりゃ8進数で8ってあかんよね
というわけ10進数で扱いたいのでこう直す。
printf "%02d" $((10#$A + 10#$B))
09
別の変数に代入するときは、
C=$(builtin printf "%02d" $((10#$A + 10#$B)))
echo ”$C”
”09”
ジブンのBlogに書いていたのだけど時々忘れて探すのが大変なのでこちらに。