Skip to content
This repository has been archived by the owner on Apr 30, 2022. It is now read-only.

Latest commit

 

History

History
28 lines (20 loc) · 1.1 KB

File metadata and controls

28 lines (20 loc) · 1.1 KB
title emoji type topics published
7月に動作していた処理が8月にエラー
💭
tech
bash
true

TL;DR

0始まりの数字を10進数で解釈させたい場合は$((10#$val))のように記載する。

経緯

date +%mの結果は、8月の場合は'08'となる。これを先頭の0を取って比較したいため$(($val))とやっていたところ、7月までは問題ないのだが8月になって以下のようなエラーが出る。

08: value too great for base (error token is "08")

bashでは一文字目が0の数字は8進数とみなされるため、08という表記はダメ、というエラー。

対応としては、$((10#$val))のように変数の頭に'10#'をつけることで10進数で解釈させることができる。

https://stackoverflow.com/questions/8078167/printf-in-bash-09-and-08-are-invalid-numbers-07-and-06-are-fine

同じようなことは過去してきたと思ったのだが、今回初めて遭遇してかなりびっくりした。