linux中判断字符串相等应使用[[ "$a" == "$b" ]]或[ "$a" = "$b" ],需严格注意空格、引号及运算符选择:双中括号更安全且支持==,单中括号仅支持=并兼容posix。

Linux 中判断两个字符串内容是否相同,核心是用 [ ] 或 [[ ]] 配合字符串比较运算符,关键在于语法规范和引号使用。
基础写法:用 = 或 == 比较
推荐使用双中括号 [[ ]],它更安全、支持更多特性(如模式匹配),且对未加引号的变量容忍度稍高;但单中括号 [ ] 更兼容传统 POSIX shell。
-
[[ "$a" == "$b" ]]或[[ "$a" = "$b" ]]—— 两者在[[ ]]中等价,推荐用==提高可读性 -
[ "$a" = "$b" ]—— 单中括号中必须用=,==在部分老 shell 中不被识别 - 变量一定要用双引号包裹,避免空格或特殊字符导致语法错误或意外分词
常见错误与避坑要点
看似简单,但以下细节出错会导致判断失效甚至脚本崩溃:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
-
空格不可省略:方括号和内部内容之间必须有空格,例如
[ "$a"="$b" ]是错的,会报 “command not found” -
不能混用数字比较符:
-eq、-ne等只用于整数,对字符串用会直接报错或返回意外结果 -
未引号变量遇空值会出问题:若
a=(空)且写成[ $a = $b ],实际变成[ = $b ],语法非法
实用示例:完整 if 判断结构
把比较嵌入条件语句中才是真实用法:
a="hello" b="hello" if [[ "$a" == "$b" ]]; then echo "字符串相等" else echo "字符串不相等" fi
也可以用单中括号写法(更严格,兼容性好):
if [ "$a" = "$b" ]; then echo "相等" fi
扩展:快速验证是否相等(命令行调试用)
无需写完整脚本,终端里一行就能试:
-
[[ "abc" == "abc" ]] && echo yes || echo no→ 输出 yes -
[ "123" = "456" ] && echo ok || echo fail→ 输出 fail - 检查退出码:
[[ "x" == "y" ]]; echo $?→ 返回 1(不相等为假);相等时返回 0










