当前位置: 首页 > news >正文

Shell if 语句小白完全指南

Shell if 语句小白完全指南

一、if 判断逻辑运算符详解(对应你书上的内容)

1. 文件 / 目录判断(最常用)

表格
 
 
 
运算符 作用 示例
-f 判断文件是否存在 if [ -f "test.txt" ]; then
-d 判断目录是否存在 if [ -d "/var/log" ]; then

2. 整数比较(数字判断)

表格
 
 
 
运算符 作用 示例
-eq 等于(equal) if [ $a -eq $b ]; then
-ne 不等于(not equal) if [ $a -ne $b ]; then
-lt 小于(less than) if [ $a -lt 10 ]; then
-gt 大于(greater than) if [ $a -gt 10 ]; then
-le 小于等于(less equal) if [ $a -le 10 ]; then
-ge 大于等于(greater equal) if [ $a -ge 10 ]; then

3. 逻辑运算符(多个条件组合)

表格
 
 
 
运算符 作用 示例        
-a 逻辑与(and,双方都成立) if [ $a -gt 5 -a $a -lt 10 ]; then        
-o 逻辑或(or,单方成立即可) if [ $a -lt 5 -o $a -gt 10 ]; then        
&& 逻辑与(和-a效果一样,更常用) if [ $a -gt 5 ] && [ $a -lt 10 ]; then        
`   ` 逻辑或(和-o效果一样,更常用) `if [ $a -lt 5 ]   [ $a -gt 10 ]; then`

4. 字符串判断

表格
 
 
 
运算符 作用 示例
-z 判断字符串是否为空 if [ -z "$name" ]; then

二、if 语句的基本结构

Shell 里 if 有三种常见结构,记住格式就不会写错:

1. 单分支结构(只有 “成立” 的情况)

bash
 
运行
 
 
 
if [ 条件判断 ]; then# 条件成立时执行的代码echo "条件成立啦!"
fi
 

2. 双分支结构(成立 / 不成立两种情况)

bash
 
运行
 
 
 
if [ 条件判断 ]; then# 条件成立时执行echo "条件成立"
else# 条件不成立时执行echo "条件不成立"
fi
 

3. 多分支结构(多个条件判断)

bash
 
运行
 
 
 
if [ 条件1 ]; thenecho "条件1成立"
elif [ 条件2 ]; thenecho "条件2成立"
elseecho "所有条件都不成立"
fi
 

三、实操脚本(可直接复制运行)

下面给你 3 个常用场景的脚本,直接复制到 .sh 文件里运行就能看到效果。

实操 1:文件 / 目录判断脚本

bash
 
运行
 
 
 
#!/bin/bash
# 检查文件和目录是否存在# 定义要检查的文件和目录
file="test.txt"
dir="/tmp/test_dir"# 检查文件是否存在
if [ -f "$file" ]; thenecho "✅ 文件 $file 存在"
elseecho "❌ 文件 $file 不存在,创建它..."touch $file
fi# 检查目录是否存在
if [ -d "$dir" ]; thenecho "✅ 目录 $dir 存在"
elseecho "❌ 目录 $dir 不存在,创建它..."mkdir -p $dir
fi
 
运行方式:
bash
 
运行
 
 
 
chmod +x check_file.sh
./check_file.sh
 

实操 2:数字判断脚本(整数比较)

bash
 
运行
 
 
 
#!/bin/bash
# 数字判断:判断用户输入的数字大小echo "请输入一个数字:"
read num  # 读取用户输入的数字if [ -z "$num" ]; thenecho "❌ 输入不能为空!"exit 1  # 退出脚本,状态码1表示错误
fi# 判断数字大小
if [ $num -lt 10 ]; thenecho "你输入的数字 $num 小于10"
elif [ $num -eq 10 ]; thenecho "你输入的数字 $num 等于10"
elseecho "你输入的数字 $num 大于10"
fi
 
运行方式:
bash
 
运行
 
 
 
chmod +x judge_num.sh
./judge_num.sh
 

实操 3:多条件组合判断脚本(逻辑与 / 或)

bash
 
运行
 
 
 
#!/bin/bash
# 多条件判断:判断数字是否在 5-10 之间,或者小于0echo "请输入一个数字:"
read num# 逻辑与:数字大于5 且 小于10
if [ $num -gt 5 ] && [ $num -lt 10 ]; thenecho "✅ 数字 $num 在 5-10 之间"
# 逻辑或:数字小于0 或者 大于10
elif [ $num -lt 0 ] || [ $num -gt 10 ]; thenecho "⚠️ 数字 $num 不在 0-10 范围内"
elseecho "ℹ️ 数字 $num 等于 0、5 或 10"
fi
 
运行方式:
bash
 
运行
 
 
 
chmod +x multi_judge.sh
./multi_judge.sh
 

四、新手避坑指南(必看!)

  1. 方括号 [ ] 前后必须有空格
     
    错误:if [-f test.txt]; then
     
    正确:if [ -f test.txt ]; then
  2. 变量比较时,建议用双引号括起来
     
    比如 [ -z "$name" ],防止变量为空时报错
  3. 整数比较只能用 -eq/-ne/-lt/-gt,不能用 ==/!=/</>
     
    错误:if [ $a == $b ]; then(字符串比较用==,整数用-eq
     
    正确:if [ $a -eq $b ]; then
  4. 逻辑与 / 或:&&/|| 要和 if 搭配使用时,要分开写判断
     
    推荐写法:if [ 条件1 ] && [ 条件2 ]; then
     
    不推荐:if [ 条件1 -a 条件2 ]; then(兼容性差)
http://www.rkmt.cn/news/1481314.html

相关文章:

  • 云原生可观测性与智能告警体系建设:让告警回归本质价值
  • 3步搞定Figma中文界面:专业设计师必备的汉化插件指南
  • Blender贝塞尔曲线工具完全指南:从新手到专业级工作流
  • 从资源焦虑到效率革命:baidupankey如何重塑你的网盘使用体验
  • 佛山奢侈品首饰回收6 家热门门店真实体验:添价收奢侈品回收圈内公认的王者 - 薛定谔的梨花猫
  • 当权限管理成为技术债:如何用mini-rbac重构企业级访问控制
  • 智能床垫怎么选?长沙蒂思普Dsleep全系列价格对比与选购指南(2026版) - GrowthUME
  • 【限时解密】CSDN未公开的“优质创作者豁免通道”:满足这2项资质+1次人工复核,违规扣费48小时内原路退回
  • 示波器探头选型与高频测量实战:从原理到避坑指南
  • AtomGit Flutter鸿蒙客户端:仓库搜索
  • Linux下RapidSVN与Meld集成:图形化SVN版本控制与可视化差异对比实战
  • 【字节跳动】100项隐私侵犯·500件全量证据材料【完整版全带精准日期】
  • 技术组织如何用制度与流程对抗管理家族化陷阱
  • 2026四川导游怎么选|TOP10持证导游测评、口碑对比与避坑指南 - 随峰国旅
  • 3步告别Linux应用管理混乱:AppImageLauncher完整解决方案
  • Perseus:3分钟解锁《碧蓝航线》全皮肤的神奇工具 [特殊字符]
  • League Akari实战指南:英雄联盟自动化工具完全攻略
  • 番茄小说下载器:5分钟掌握离线阅读的终极解决方案
  • 2026去重庆4天3晚怎么安排最合理|TOP3持证导游推荐与避坑指南(无购物) - 随峰国旅
  • TV Bro电视浏览器:重新定义智能电视上网体验的遥控器友好解决方案
  • 冒险岛游戏编辑器终极指南:一站式资源管理与地图设计工具
  • 智能驾驶功能安全:从概念到实战,一篇讲透核心技术与未来布局
  • 从模电原理看爱情:放大器、二极管与人生电路的工程启示
  • AtomGit Flutter鸿蒙客户端:仓库详情页
  • 2026重庆5天4晚纯玩游怎么选导游|路线解析、口碑对比与选择指南 - 随峰国旅
  • 普林斯顿团队发布Goedel - Architect:低成本开源框架革新形式化定理证明
  • I2C软件模拟驱动开发:从协议原理到稳定调试的实战指南
  • Android 13应用语言独立设置:打破系统限制的技术实现方案
  • CSDN AI数字营销免费试用期到底几天?3大关键限制+2个自动续费陷阱,90%新人不知道
  • Linux内核时间管理与延时机制:从jiffies到高精度定时器实战