for file in * do echo "$file" done
for file in *; do echo "$file" done # or for file in * do echo "$file" done
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.
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
ShellCheck is a static analysis tool for shell scripts. This page is part of its documentation.