Skip to content
Joachim Ansorg edited this page Oct 31, 2022 · 2 revisions

ShellCheck

Each individual ShellCheck warning has its own wiki page like SC1000. Use GitHub Wiki's "Pages" feature above to find a specific one, or see Checks.

Clone this wiki locally

Shells are space sensitive. Use < <(cmd), not << (cmd).

Problematic code:

while read -r line
do
  echo "You said: $line"
done <<(cmd)

Correct code:

while read -r line
do
  echo "You said: $line"
done < <(cmd)

Rationale:

When redirecting < from a process substitution <(cmd), make sure there is a space between the two < characters as shown in the example.

With a space cmd1 < <(cmd2), is correctly interpreted as "run cmd1, reading stdin from cmd2, without forking for a pipeline".

Without a space, << is incorrectly considered a here document, and (cmd2) is an invalid delimiter token.

Exceptions:

None

Related resources:

  • Help by adding links to BashFAQ, StackOverflow, man pages, POSIX, etc!