双方括号[[ ]]比[ ]更强大安全,支持字典序比较(>、

双方括号支持更自然的字符串比较
双方括号 [[ ]] 是 Bash 的关键字,比单括号 [ ] 更强大、更安全。它原生支持直接使用 > 和 比较字符串字典序,无需转义;也支持模式匹配和正则表达式,适合处理变量内容、路径名、用户输入等场景。
基础字符串相等与非等判断
用 == 或 = 判断是否相等(两者在 [[ ]] 中等价),!= 判断不等。注意:右侧可含通配符,左侧变量值不会被展开为模式,除非加引号明确控制。
[[ "$name" == "admin" ]] && echo "是管理员"[[ "$ext" != "txt" ]] && echo "不是文本文件"-
[[ "$file" == *.log ]] && echo "日志文件"(*.log是模式,$file被匹配)
字典序比较与空值检测
直接用 >、 按 ASCII 值逐字符比较,结果符合 sort 默认顺序。空值检测推荐用 -z(为空)或 -n(非空),比 == "" 更可靠,尤其当变量未定义或含空白时。
Linux 安全审计工具,检查 SSH 配置、开放/监听端口、防火墙规则(ufw/iptables/nftables)、失败登录尝试、sudoers 权限...
[[ "$a" > "$b" ]] && echo "a 在字典序上排在 b 后面"[[ -z "$input" ]] && echo "输入为空"-
[[ -n "${PATH//:/}"]] && echo "PATH 至少含一个目录"(配合参数扩展更灵活)
结合正则与逻辑运算增强判断能力
用 =~ 进行正则匹配,支持分组、量词、字符类等;逻辑运算可用 &&、||,优先级清晰,且短路求值安全。
[[ "$email" =~ ^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$ ]] && echo "邮箱格式合法"[[ "$mode" == "debug" && "$level" -ge 3 ]] && echo "开启详细日志"[[ "$cmd" == "start" || "$cmd" == "stop" ]] || { echo "不支持命令"; exit 1; }










