You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Joachim Ansorg edited this page Nov 12, 2021
·
2 revisions
Unexpected tokens after compound command. Bad redirection or missing ;/&&/||/|?
Problematic code:
whileecho"$2";dotrue;done \
head -n "$1"while sleep 1;do date;done> my file
Correct code:
whileecho"$2";dotrue;done \
| head -n "$1"while sleep 1;do date;done>"my file"
Rationale:
ShellCheck found unexpected trailing characters after a compound command.
The only things allowed after compound commands are redirections, shell keywords, and the various command separators (;, &, |, &&, ||).
In the first example, a | was missing, causing head to appear as an unexpected trailing word, instead of being piped to. In the second example, a lack of quoting caused file to appear as an unexpected trailing word, instead of being part of the redirection.
Examine your statement and correct the problem.
Exceptions:
None
Related resources:
Help by adding links to BashFAQ, StackOverflow, man pages, POSIX, etc!