diff --git a/SC2292.md b/SC2292.md new file mode 100644 index 0000000..64daabb --- /dev/null +++ b/SC2292.md @@ -0,0 +1,31 @@ +## 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: + +```sh +[ -e /etc/issue ] +``` + +### Correct code: + +```sh +[[ -e /etc/issue ]] +``` + +### Rationale: + +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. + +### Exceptions: + +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 `[[ .. ]]`. + +### Related resources: + +* BashFAQ 031: [What is the difference between test, \[ and \[\[ ?](https://mywiki.wooledge.org/BashFAQ/031)