SC3019 – ShellCheck Wiki

See this page on GitHub

Sitemap


In POSIX sh, exponentials are undefined.

Problematic code:

ShellCheck noticed you're using **-notation with two asterisks to obtain an exponent's value. Some examples:

#!/bin/sh
echo $((2 ** 3)) # Using `**` for an exponent is undefined in POSIX sh.

Correct code:

Other possibilities exist:

#!/bin/sh
echo $((2 * 2 * 2))   # equivalent to `bash`'s `echo $((2 ** 3))`
echo '2 ^ 3' | bc     # piping the formula to `bc` to parse the output https://stackoverflow.com/a/13111995
printf '2 ^ 3\n' | bc # piping using `printf` (newline `\n` is mandatory)

ShellCheck is a static analysis tool for shell scripts. This page is part of its documentation.