MW211 EXIT

devlog
シェル/「$(())」は「expr」
2013年07月13日
以前、『「$(())」は「expr」コマンドと同等になる、これは便利。』と書いたが
これには落とし穴があった。
8進数の扱いについてだ。

こんな感じ。
┌──────────────────────────────────────┐
│$ echo `expr 08 + 1`                                                     →9│
├──────────────────────────────────────┤
│$ echo $((08 + 1))                                    →Syntax error: 08 + 1│
└──────────────────────────────────────┘

先頭に「0」がつくと8進数と認識されるわけだが
8進数は「0~7」のみで数字を構成するから、「8」はエラーとなる。

でも、「expr」だと、10進数と解釈してくれるみたいだ。
分類:Linuxシェル