Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

シェルスクリプト中で"0042"みたいな形の文字列で格納されてる10進数の数値を取り出す

shuzo-kino.hateblo.jp
でやった話題の発展。
シェルスクリプト中で"0042"みたいな形の文字列で格納されてる10進数の数値を取り出す方法について。

実際のところ

こんな値があったとします。

$ FOOBAR="0042"
$ echo $FOOBAR
0042

API用のJSONに渡す関係で、こいつは数値として格納してやりたいのですが、となると0が邪魔。
printfの書式指定構文でいけるやろと思っても、さすがにそこまで賢くありません。

$ printf "%d" $FOOBAR
34

というわけで本題。
魔界記法めいていますが、変数展開の際にこうやれば意図通り42と引っ張り出せます。

$ echo $((10#$FOOBAR))
42

ちゃんと計算も可能。

$ printf $((10#$FOOBAR + 1))
43