Shell面试题更新 2026-08-05

在 Shell 脚本中,条件判断语句的使用方法是什么?

技术原理Shell

考察说明

考查对 Shell 脚本中条件判断语法和常见用法的掌握程度。

回答思路

  1. 【回答框架 1】Shell 脚本的条件判断主要使用 if、elif、else 和 fi 关键字,基本结构为 if [ condition ]; then ... elif [ condition2 ]; then ... else ... fi。条件判断通常放在方括号 [ ] 或双括号 [[ ]] 中,用于测试命令执行结果、文件属性或字符串、数值比较等。
  2. 【回答框架 2】常见的测试表达式包括文件测试(如 -f 文件是否存在且为普通文件、-d 目录是否存在)、字符串比较(=、!=、-z、-n)、数值比较(-eq、-ne、-gt、-lt、-ge、-le)。注意使用方括号时,操作符和操作数之间必须留有空格,且变量最好用双引号引用以避免空值或特殊字符问题。
  3. 【回答框架 3】除了 if 结构,还可以使用 case 语句进行多分支匹配,适合处理多个离散值。case 会根据模式匹配执行对应分支,以 ;; 结束每个分支。另外,条件判断可以结合 && 和 || 进行逻辑与或运算,用于简化单行条件执行。
  4. 【回答框架 4】编写条件判断时,需要特别注意退出状态码的概念,任何命令都有退出码,if 判断的是命令或测试表达式的退出码是否为 0。方括号 [ 实际上是一个命令,[[ ]] 是关键字,支持更多模式匹配和逻辑操作。
  5. 【关键点 1】if 结构基于命令退出码判断,0 为真非 0 为假。
  6. 【关键点 2】方括号 [ ] 与双括号 [[ ]] 的区别在于 [[ ]] 支持正则和模式匹配,且更加安全。
  7. 【关键点 3】数值比较使用 -eq、-ne 等,字符串比较使用 =、!= 等,无法混用。
  8. 【关键点 4】case 语句适用于多值匹配,语法简洁。
  9. 【关键点 5】变量引用时建议加双引号,避免未定义或带空格导致错误。
  10. 【易错点 1】忘记在方括号两侧留空格或变量未加引号导致语法错误。
  11. 【易错点 2】混淆字符串比较和数值比较操作符,导致逻辑错误。
  12. 【易错点 3】在 if 判断中直接使用管道或命令替换时需注意退出码的来源,可能不是预期命令的退出码。