Created SC2043 (markdown)

koalaman
2014-08-08 17:18:10 -07:00
parent 2e061da9cf
commit db97acd01d

38
SC2043.md Normal file

@@ -0,0 +1,38 @@
## This loop will only run once, with var=value
### Problematic code:
for var in value
do
echo "$var"
done
### Correct code:
Correct code depends on what you want to do.
To iterate over files in a directory, instead of `for var in /my/dir` use:
for var in /my/dir/* ; do echo "$var"; done
To iterate over lines in a file or command output, use a while read loop instead:
mycommand | while IFS= read -r line; do echo "$line"; done
To iterate over *words* written to a command or function's stdout, instead of `for var in myfunction`, use
for var in $(myfunction); do echo "$var"; done
To iterate over *words* in a variable, instead of `for var in myvariable`, use
for var in $myvariable; do echo "$var"; done
### Rationale:
ShellCheck has detected that your for loop iterates over a single, constant value. This is most likely a bug in your code, caused by you not expanding the value in the way you want.
### Contraindications
None.