org.sonar.l10n.shellcheck.rules.shellcheck.SC2165.html Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of sonar-shellcheck-plugin Show documentation
Show all versions of sonar-shellcheck-plugin Show documentation
ShellCheck plugin for SonarQube
This nested loop overrides the index variable of its parent.
And companion warning "This parent loop has its index variable overridden."
Problematic code
for((i=0; i<10; i++))
do
for i in *
do
echo "$i"
done
done
Correct code
for((i=0; i<10; i++))
do
for j in *
do
echo "$j"
done
done
Rationale
When nesting loops, especially arithmetic for loops, using the same loop variable can cause unexpected results.
In the problematic code, i
will contain the last filename from the inner loop, which will be interpreted as a value in the next iteration out the outer loop. This results in either an infinite loop or a syntax error, depending on whether the last filename is a valid shell variable name.
In nested for-in loops, variable merely shadow each other and won't cause infinite loops or syntax errors, but reusing the variable name is rarely intentional.
Exceptions
None.
© 2015 - 2025 Weber Informatics LLC | Privacy Policy