当前位置: 首页 > 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.jsqmd.com/news/969604/

相关文章:

  • Defender Control:如何精细控制Windows Defender的防护机制
  • Python学习第69天: NumPy的应用-2
  • 5分钟搞定Boot Camp驱动:Brigadier终极自动化解决方案
  • 基于AT89C51SND1C单片机的硬盘MP3播放器设计与实现
  • 佛山奢侈品首饰回收:六大主流平台添价收奢侈品回收实力正向排名NO.1 - 薛定谔的梨花猫
  • 免费解锁加密音乐文件的终极完整指南:3分钟掌握浏览器音乐解密技巧 [特殊字符]
  • 从富士康顶嘴事件看制造业管理:代际沟通、规则执行与组织韧性
  • 告别下载安装!这款在线PS工具让你在浏览器里轻松修图 - GrowthUME
  • 全面解析OpenCamera:完全免费的专业级Android相机应用神器
  • 大坝的GNSS变形监测系统是什么?主要有哪几种应用?
  • 3步搞定Figma中文界面:专业设计师必备的汉化插件指南
  • UC3842电压反馈电路设计:从经典光耦到增益调节的优化方案
  • 循环索引变量请避免使用全局变量
  • 教资科三历史教学设计模板|历史主观题答题资料
  • 大疆无人机固件下载终极指南:如何重新掌控你的飞行设备
  • 赛道收官,热爱不止!后谷咖香陪伴跑者健康续航 - 品牌速递
  • 云原生可观测性与智能告警体系建设:让告警回归本质价值
  • Claude code三种模式详解
  • 福州艺术漆加盟公司选择哪家好 - 品牌推广大师
  • 数据中心设施故障预防指南:为何CRAC风扇的异常振动不容忽视?——兼谈机械技师的必要性与聘用建议 - 生活服务
  • 智慧校园平台挑选攻略:这五点,问问自己就清楚了
  • 平板电脑硬件设计揭秘:从ARM/x86平台选型到电源散热系统实战
  • [智能体-308]:机器的九级智能阶梯与对应的核心技术(已有的、发展趋势、未来可能的新技术)
  • 从零制作FM发射器:电路原理、调试技巧与实战指南
  • 3分钟免费汉化Axure RP:中文语言包终极指南
  • 如何利用UKB_RAP平台高效分析英国生物银行的海量生物医学数据:完整指南
  • 佛山奢侈品首饰回收6 家热门门店真实体验:添价收奢侈品回收圈内公认的王者 - 薛定谔的梨花猫
  • Android Studio中文语言包深度解析:破解本地化困局的技术架构与实施策略
  • 从‘按钮,按钮’到‘电车难题’:用Python模拟经典道德困境,可视化你的选择结果
  • Blender贝塞尔曲线工具完全指南:从新手到专业级工作流