shellcheck/shellcheck.1.md

2.4 KiB

% SHELLCHECK(1) Shell script analysis tool

NAME

shellcheck - Shell script analysis tool

SYNOPSIS

shellcheck [OPTIONS...] FILES...

DESCRIPTION

ShellCheck is a static analysis and linting tool for sh/bash scripts. It's mainly focused on handling typical beginner and intermediate level syntax errors and pitfalls where the shell just gives a cryptic error message or strange behavior, but it also reports on a few more advanced issues where corner cases can cause delayed failures.

OPTIONS

-f FORMAT, **--format=**FORMAT

Specify the output format of shellcheck, which prints its results in the standard output. Subsequent -f options are ignored, see FORMATS below for more information.

-e\ CODE1[,CODE2...],\ **--exclude=**CODE1[,CODE2...]

Explicitly exclude the specified codes from the report. Subsequent -e options are cumulative, but all the codes can be specified at once, comma-separated as a single argument.

Also note that shellcheck supports multiple Bourne shell dialects, and examines the file's shebang to determine which one to use.

FORMATS

tty

Plain text, human readable output. This is the default.

gcc

GCC compatible output. Useful for editors that support compiling and showing syntax errors.

For example, in Vim, :set makeprg=shellcheck\ -f\ gcc\ % will allow using :make to check the script, and :cnext to jump to the next error.

<file>:<line>:<column>: <type>: <message>
checkstyle

Checkstyle compatible XML output. Supported directly or through plugins by many IDEs and build monitoring systems.

<?xml version='1.0' encoding='UTF-8'?>
<checkstyle version='4.3'>
  <file name='file'>
    <error
      line='line'
      column='column'
      severity='severity'
      message='message'
      source='ShellCheck.SC####' />
    ...
  </file>
  ...
</checkstyle>
json

Json is a popular serialization format that is more suitable for web applications. ShellCheck's json is compact and contains only the bare minimum.

[
  {
    "line": line,
    "column": column,
    "level": level,
    "code": ####,
    "message": message
  },
  ...
]

SEE ALSO

sh(1) bash(1)