diff --git a/SC2075.md b/SC2075.md new file mode 100644 index 0000000..a3a6b45 --- /dev/null +++ b/SC2075.md @@ -0,0 +1,27 @@ +## Escaping `\<` is required in `[..]`, but invalid in `[[..]]` + +### Problematic code: + +```sh +[[ aardvark \< zebra ]] +``` + +### Correct code: + +```sh +[[ aardvark < zebra ]] +``` + +### Rationale: + +Grammatically speaking, `[` is considered a normal command name, so `<` and `>` are interpreted as redirections. When using the lexicographical string operators `<` and `>` in `[ .. ]`, they must be escaped (e.g. `\<` or `"<"`). + +`[[` is considered its own grammatical construct, and therefore it does not require (nor does it allow) escaping `<` or `>`. + +### Exceptions: + +None + +### Related resources: + +* Help by adding links to BashFAQ, StackOverflow, man pages, POSIX, etc! \ No newline at end of file