linux中多分支用if-elif-else实现,按序判断互斥条件,命中即执行并跳过其余;语法要求if/elif后跟then、else后不加then、[ ]内外空格、以fi结尾;数值比较用-eq/-lt等,字符串用==或=,文件用-f/-x,命令退出码为0即真。

Linux 中用 if-else 处理多分支,核心是靠 elif(即 “else if”)串联多个互斥条件,按顺序逐个判断,一旦命中就执行对应代码块,其余跳过;全不满足时走 else 分支。
多分支语法结构要写对
必须严格遵循 Shell 语法规范:
-
if开头,每个elif后必须跟then,else后不加then - 所有
[ ]测试命令中,左括号[后、右括号]前都必须有空格 - 整段结构以
fi结尾,不能遗漏 - 条件表达式可用
[ ]、[[ ]]或命令本身(如ss -lntp | grep httpd),Shell 判断依据是该命令的退出状态码(0 为真)
数值比较常用操作符
判断数字大小时,别用 <code>> 符号——它们在 [ ] 中会报错或被当文件重定向。应使用:
-
-eq(等于)、-ne(不等于) -
-lt(小于)、-gt(大于) -
-le(小于等于)、-ge(大于等于)
例如:if [ $score -ge 90 ]; then echo "A"
字符串和文件判断也支持多分支
字符串比较用 = 或 ==(推荐双等号,更安全),空值检查用 -z:
if [ "$name" = "admin" ]; then ...elif [ -z "$name" ]; then echo "未输入用户名"
文件类判断常用于服务检查:
if ss -lntp | grep -q ':80'; then echo "httpd running"elif [ -f /usr/bin/nginx ] && [ -x /usr/bin/nginx ]; then nginx -t && nginx
实际脚本示例:成绩分级
保存为 grade.sh 并运行:
#!/bin/bash read -p "请输入分数: " score if [ $score -ge 90 ]; then echo "优秀" elif [ $score -ge 80 ]; then echo "良好" elif [ $score -ge 60 ]; then echo "及格" else echo "不及格" fi
注意:输入需为纯数字,否则 [ $score -ge 60 ] 会报错——生产环境建议先用 [[ $score =~ ^[0-9]+$ ]] 验证格式。











