4 SC2041
Joachim Ansorg edited this page 2021-11-12 19:24:09 +01:00

This is a literal string. To run as a command, use $(..) instead of '..' .

Problematic code:

for i in 'seq 1 10'
do
  echo "$i"
done

Correct code:

for i in $(seq 1 10)
do
  echo "$i"
done

Rationale:

The intent was to run the code in the single quotes. This would have worked with slanted backticks, `..`, but here the very similar looking single quotes '..' were used, resulting in a string literal instead of command output.

This is one of the many problems with backticks, so it's better to use $(..) to expand commands.

Exceptions:

None.