Skip to content
Lucas Larson edited this page Jan 27, 2023 · 7 revisions

In POSIX sh, brace expansion is undefined.

Problematic code:

#!/bin/sh

for i in {1..5}; do ...

Here, $i expands to {1..5}. It does not expand to the sequence 1 2 3 4 5

Correct code:

#!/bin/sh
i=1
# while $i ≤ 5 ...
while [ "${i}" -le 5 ]; do ...

  # something that will occur 5 times

  i=$((i + 1))
done

You can also use the seq command, e.g. seq 1 5, but seq is not a POSIX utility.

Rationale:

Exceptions:

None

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