“Single brackets are a security vulnerability. Double brackets. Always. No exceptions.”*
Always use [[ ]], NEVER single brackets [ ]:
# WRONG - single brackets have many gotchasif[$name=="DevOps"];then# CORRECT - double brackets are saferif[["$name"=="DevOps"]];then
Why Single Brackets Are Dangerous
Single brackets [ ] are an external binary (/usr/bin/[). They don’t prevent word splitting.
name="hello world"# Single brackets - BREAKS![$name=="hello world"]# ERROR: too many arguments# Double brackets - works[[$name=="hello world"]]# No error
“I’ve seen production outages caused by single brackets and unquoted variables. This isn’t academic - it’s job security.”
Syntax Rules
# Spaces are required around brackets and operators[["$name"=="DevOps"]]# CORRECT[["$name"=="DevOps"]]# WRONG - no spaces around ==