Shell条件判断全解|if嵌套、test、复合条件、双括号实操(Xshell完整上机)

📅 2026/7/13 13:58:46
Shell条件判断全解|if嵌套、test、复合条件、双括号实操(Xshell完整上机)
一、前言本文基于Xshell远程Linux实操完整梳理Shell条件判断核心知识点搭建结构化知识框架覆盖if-then-else、if嵌套、test命令、复合条件、[]单方括号、[[]]双方括号、(())双括号判断附带完整可运行Shell脚本所有操作均在Xshell真实执行配套截图说明适配课程作业提交。二、核心概念理解1. Shell条件判断作用Shell脚本通过条件判断实现分支逻辑根据数字、字符串、文件状态、多条件组合执行不同代码块是自动化脚本核心语法。2. 四种判断语法概念1. test命令标准条件检测工具等价单方括号[ ]POSIX通用兼容性最强。2. 单方括号 [ 条件 ]test命令简写条件前后必须留空格仅支持基础判断。3. 双方括号 [[ 条件 ]]bash扩展语法支持字符串模糊匹配/||复合条件容错更高。4. 双括号 (( 条件 ))仅用于数字算术判断直接使用 等运算符无需转义。3. if分支语法• 基础if-then-else 二分支判断• 嵌套ifif内部再写if实现多分层判断• 复合条件逻辑与、||逻辑或同时满足/任一满足才成立三、知识框架语法、用途、参数/运算符详解模块1test命令 / 单方括号 [ ]用途检测文件属性、字符串、数字大小所有Linux shell通用。核心判断规则1. 文件测试常用| 表达式 | 含义 || ---- | ---- || -e file | 文件是否存在 || -f file | 是否普通文件 || -d file | 是否文件夹 || -r file | 文件是否可读 |2. 数字判断-eq等于、-ne不等于、-gt大于、-lt小于、-ge大于等于、-le小于等于3. 字符串判断-z str字符串为空、-n str字符串非空、str1 str2字符串相等4. 复合条件-a逻辑与、-o逻辑或实操示例Xshell直接运行# test命令写法test -e test.sh echo 文件存在# 单方括号等价写法[ -d testdir ] echo 是目录[ 10 -gt 5 -a 3 -lt 6 ] echo 复合条件成立模块2双方括号 [[ ]]bash专属推荐用途增强版条件判断支持通配符匹配、原生 ||无需转义日常脚本首选。优势1. 复合条件直接用 ||不用-a/-o2. 支持字符串模糊匹配[[ abc a* ]]3. 空格容错更好实操示例[[ -f test.sh 15 -ge 10 ]] echo 复合条件成立[[ hello h* ]] echo 字符串匹配成功模块3双括号 (( ))仅数字算术判断用途只做整数大小比较直接使用数学运算符 !不用-gt/-lt。实操示例(( 20 10 )) echo 20更大num18(( num 18 )) echo 成年模块4if-then-else 基础语法标准结构if [条件]; then条件成立执行代码else条件不成立执行代码fi模块5if嵌套语法在if的then代码块内部再写完整if语句实现分层多条件判断。if 外层条件; thenif 内层条件; then双重满足执行else外层满足、内层不满足fielse外层不满足fi四、完整实战Shell脚本覆盖全部要求Xshell可直接运行脚本功能覆盖全部知识点1. if-then-else基础分支2. if嵌套判断3. test命令判断4. [ ]单方括号、[[ ]]双方括号复合条件5. (( ))双括号数字判断6. ||复合多条件步骤1Xshell创建脚本vim judge_demo.sh步骤2完整脚本代码#!/bin/bash# Shell条件判断综合练习脚本# 定义测试变量score85filenametest.txt# 1. test命令基础判断echo 1.test命令文件检测if test -e $filenamethenecho $filename 文件已存在elsetouch $filenameecho 文件不存在已新建$filenamefi# 2. 单方括号[] 复合条件 -a/-oecho -e \n2.单方括号[] 数字复合判断if [ $score -ge 60 -a $score -lt 90 ]thenecho 成绩$score及格良好区间elseecho 成绩不在60~89区间fi# 3. 双括号(( )) 纯数字算术判断echo -e \n3.双括号(( )) 数字判断if (( score 90 ))thenecho 成绩优秀elif (( score 60 ))thenecho 成绩及格elseecho 成绩不及格fi# 4. 双方括号[[]] 复合条件 || if嵌套echo -e \n4.双方括号[[]] if嵌套if [[ -f $filename $score -gt 70 ]]thenecho 外层条件文件存在 且 分数大于70进入嵌套判断# if嵌套if [[ $score -ge 80 ]]thenecho 嵌套判断分数≥80评级良好elseecho 嵌套判断分数71~79评级合格fielseecho 外层条件不满足fi步骤3赋权并运行脚本Xshell命令# 添加执行权限chmod x judge_demo.sh# 运行脚本./judge_demo.sh脚本运行输出示例1.test命令文件检测test.txt 文件已存在2.单方括号[]