mirror of
https://github.com/koalaman/shellcheck.git
synced 2025-10-04 03:46:06 +08:00
Created SC1063 (markdown)
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!
|
Reference in New Issue
Block a user