Skip to content

Instantly share code, notes, and snippets.

@matthewpersico
Last active March 22, 2018 00:52
Show Gist options
  • Save matthewpersico/d8ad66aecd01bed825a1513bb3c625e0 to your computer and use it in GitHub Desktop.
Save matthewpersico/d8ad66aecd01bed825a1513bb3c625e0 to your computer and use it in GitHub Desktop.
Freshen up shellcheck's directive's page
PROPOSED:
Shellcheck directives allow you to control how `shellcheck` works, and take the form of comments in files:
hexToAscii() {
# shellcheck disable=SC2059
printf "\x$1"
}
Supported directives are
### disable
Prevent shellcheck from processing one or more warnings:
# shellcheck disable=code[,code...]
statement_where_warning_should_be_disabled
### source
Tell ShellCheck where to find a sourced file (since 0.4.0):
# shellcheck source=src/examples/config.sh
. "$(locate_config)"
### shell
Specify the shell for a script (similar to the shebang, if you for any reason don't want to add one) (since [0.4.5](https://github.com/koalaman/shellcheck/issues/581#issuecomment-249437837)):
# shellcheck shell=sh
echo foo &> bar
Directives that replace or are immediately after the shebang apply to the entire script. Otherwise, they are scoped to the structure that follows it (such as all branches of a `case` statement, or an entire function).
*Note: There is a [known bug](../issues/1036) in the current version when directives appear within `then` clauses of `if` blocks that causes Shellcheck to report SC1072 on otherwise valid code. Avoid using directives within `then` clauses - instead place them at the top of the `if` block or another enclosing block. This is fixed on the [online version](https://www.shellcheck.net/) and the next release.*
There is no support for scoping a directive to the first structure of the script. In these cases, use a dummy command `true` or `:` and then add directives, such as
# This directive applies to the entire script
# shellcheck disable=2086
true
# This directive only applies to this function
# shellcheck disable=2043
f() {
...
}
Silencing parser errors is purely cosmetic, and will not prevent ShellCheck from continuing.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment