SC2292 – ShellCheck Wiki

See this page on GitHub


Prefer [[ ]] over [ ] for tests in Bash/Ksh.

This is an optional suggestion. It must be explicitly enabled with a directive enable=require-double-brackets in a # shellcheck comment or .shellcheckrc

Problematic code:

[ -e /etc/issue ] 

Correct code:

[[ -e /etc/issue ]]


ShellCheck has been explicitly asked to warn about uses of [ .. ] in favor of the extended Bash/Ksh test [[ .. ]].

[[ .. ]] suppresses word splitting and globbing, supports a wider variety of tests, and is generally safer and better defined than [ .. ]. For an in-depth list of differences, see the Related Resources.


This check is not enabled by default, and may have been turned on for your current project by someone who wants it enforced. You can still ignore it with a directive.

This suggestion does not trigger for Sh or Dash scripts, even when explicitly enabled, as these shells don't support [[ .. ]].

ShellCheck is a static analysis tool for shell scripts. This page is part of its documentation.