mirror of
https://github.com/koalaman/shellcheck.git
synced 2025-03-12 12:35:25 -07:00
Created SC1063 (markdown)
parent
ff80970a83
commit
45e7d232c6
42
SC1063.md
Normal file
42
SC1063.md
Normal file
@ -0,0 +1,42 @@
|
||||
## You need a line feed or semicolon before the 'do'.
|
||||
|
||||
### Problematic code:
|
||||
|
||||
```sh
|
||||
for file in * do
|
||||
echo "$file"
|
||||
done
|
||||
```
|
||||
|
||||
### Correct code:
|
||||
|
||||
```sh
|
||||
for file in *; do
|
||||
echo "$file"
|
||||
done
|
||||
|
||||
# or
|
||||
|
||||
for file in *
|
||||
do
|
||||
echo "$file"
|
||||
done
|
||||
```
|
||||
### Rationale:
|
||||
|
||||
ShellCheck found a `do` on the same line as a loop, but `do` only starts a loop block at the start of a line/statement. Make the `do` the start of a new line/statement by inserting a linefeed or semicolon in front of it.
|
||||
|
||||
### Exceptions:
|
||||
|
||||
If you wanted to treat `do` as a literal string, you can quote it to make this clear to ShellCheck and humans:
|
||||
|
||||
```
|
||||
for f in "for" "do" "done"
|
||||
do
|
||||
echo "Shell keywords include: $f"
|
||||
done
|
||||
```
|
||||
|
||||
### Related resources:
|
||||
|
||||
* Help by adding links to BashFAQ, StackOverflow, man pages, POSIX, etc!
|
Loading…
x
Reference in New Issue
Block a user