1 SC2075
Vidar Holen edited this page 2022-10-19 21:36:39 -07:00

Escaping \< is required in [..], but invalid in [[..]]

Problematic code:

[[ aardvark \< zebra ]]

Correct code:

[[ 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

  • Help by adding links to BashFAQ, StackOverflow, man pages, POSIX, etc!