Skip to content
Ben Peachey edited this page Sep 21, 2018 · 2 revisions

Numbers with leading 0 are considered octal.

Problematic code:

echo $(( 16 - 08 ))

Correct code:

echo $(( 16 - 8 ))

Rationale:

ShellCheck found an integer literal with a leading zero, but containing the digits 8 or 9.

This is invalid, as the integer will be interpreted as an octal value (e.g. 0777 == 0x1FF == 511).

To have the value parsed in base 10, either remove the leading zeros as in the example, or specify the radix explicitly:

echo $((10#08)) 

Exceptions:

None

Related resources:

  • Help by adding links to BashFAQ, StackOverflow, man pages, POSIX, etc!

The BASH manual "Shell Arithmetic" chapter

ShellCheck

Each individual ShellCheck warning has its own wiki page like SC1000. Use GitHub Wiki's "Pages" feature above to find a specific one, or see Checks.

Clone this wiki locally