Skip to content

Files

Latest commit

 

History

History
30 lines (18 loc) · 1.08 KB

SC1132.md

File metadata and controls

30 lines (18 loc) · 1.08 KB

Pattern: Use of unescaped and unquoted &

Issue: -

Description

An unescaped and unquoted & terminates the command, but here it's used in the middle of what would otherwise be a shell word. This most commonly happens when copying a URL with query string parameters without escaping the &.

Either quote or escape the & if you wanted it as a literal ampersand, or add a space after it to make it easier to see where the previous command stopped.

Example of incorrect code:

curl https://www.google.com/search?q=cats&tbm=isch

Example of correct code:

curl "https://www.google.com/search?q=cats&tbm=isch"

Exceptions

If you do want to background one command and run another, e.g. sleep 10&wait, just add a space or linefeed after the & to make this more obvious: sleep 10& wait

This does not change the meaning of the script, it just makes it clear to ShellCheck (and other humans) that the & isn't supposed to be a part of the shell world.

Further Reading