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

Shell脚本编程入门:从基础语法到流程控制

引言

Shell脚本是Linux系统管理和自动化任务中不可或缺的强大工具。无论是日常系统维护、批量处理文件,还是自动化部署,掌握Shell脚本编程都能极大提高工作效率。本文将从零开始,系统介绍Shell脚本的基本语法和核心概念,为初学者提供一个全面而实用的学习指南。

一、Shell脚本的创建与执行

1. 脚本文件基础

Shell脚本通常使用.sh作为扩展名,文件开头必须指定解释器:

#!/bin/bash

这行特殊的注释(shebang)告诉系统使用Bash解释器来执行此脚本。

2. 执行权限与运行方式

脚本需要执行权限才能直接运行:

chmod +x script.sh  # 添加执行权限
./script.sh         # 通过路径执行

也可以不使用执行权限,直接通过解释器运行:

bash script.sh

二、变量:存储数据的容器

1. 变量声明与使用

name="Gero"          # 声明变量(等号两边不能有空格)
echo $name           # 使用变量:输出 Gero
echo ${name}         # 推荐使用{}的格式,更清晰

2. 特殊变量类型

readonly PI=3.14     # 只读变量,不可修改
unset name           # 删除变量(对只读变量无效)

三、字符串操作

Shell中字符串处理非常灵活:

str="Hello World"
echo ${#str}         # 输出字符串长度:11
echo ${str:6}        # 从第6个字符开始截取:World
echo ${str:6:3}      # 从第6个字符截取3个字符:Wor

四、参数传递:让脚本更灵活

Shell脚本可以接受外部参数:

#!/bin/bash
echo "脚本名称:$0"
echo "第一个参数:$1"
echo "参数个数:$#"
echo "所有参数:$*"

特殊参数变量:

  • $#:参数个数
  • $*/$@:所有参数
  • $?:上条命令退出状态
  • $$:当前进程ID

五、运算符:数学与逻辑运算

1. 算术运算的三种方式

# 使用expr
val=`expr 2 + 2`     # 注意运算符两侧空格# 使用双括号
((count++))          # 自增运算
val=$((1 + 2))       # 赋值运算# 使用方括号
val=$[1 + 2]         # 简单算术运算

2. 关系与逻辑运算符

# 关系比较
[ $a -eq $b ]        # 等于
[ $a -ne $b ]        # 不等于
[ $a -gt $b ]        # 大于# 逻辑运算
[ condition1 -a condition2 ]  # 且
[ condition1 -o condition2 ]  # 或

3. 文件测试运算符

[ -f "/path/to/file" ]    # 是否存在且为普通文件
[ -d "/path/to/dir" ]     # 是否存在且为目录
[ -x "/path/to/script" ]  # 是否存在且可执行

六、流程控制:程序逻辑的骨架

1. 条件判断:if-else结构

# 单分支判断
if [ $age -gt 18 ]; thenecho "成年人"
fi# 双分支判断
if [ -f "$file" ]; thenecho "文件存在"
elseecho "文件不存在"
fi# 多分支判断
if [ $score -ge 90 ]; thenecho "优秀"
elif [ $score -ge 60 ]; thenecho "及格"
elseecho "不及格"
fi

2. 多条件选择:case语句

case $fruit in"apple")echo "这是苹果";;"banana")echo "这是香蕉";;*)echo "未知水果";;
esac

3. 循环结构:for与while

# for循环:数值方式
for ((i=1; i<=5; i++))
doecho "第$i次循环"
done# for循环:遍历列表
for color in red green blue
doecho "颜色: $color"
done# while循环
count=1
while [ $count -le 3 ]
doecho "计数: $count"((count++))
done

七、实战案例:一个简单的系统监控脚本

#!/bin/bash
# 系统状态监控脚本echo "=== 系统状态报告 ==="
echo "报告生成时间: $(date)"
echo "当前用户: $(whoami)"
echo "系统运行时间: $(uptime)"
echo "内存使用情况:"
free -h
echo "磁盘使用情况:"
df -h

总结

Shell脚本编程是每个Linux用户和系统管理员必备的技能。通过本文的学习,您已经掌握了:

  1. 脚本基础:创建、权限管理和执行方式
  2. 变量使用:声明、引用和删除变量
  3. 字符串操作:长度获取、子串提取等常用操作
  4. 参数传递:使脚本能够接受外部输入
  5. 运算符:算术、关系、逻辑和文件测试运算符
  6. 流程控制:条件判断和循环结构的灵活运用
http://www.xdnf.cn/news/19227.html

相关文章:

  • USB4 vs USB3.0:一场接口技术的革命性飞跃
  • 鸿蒙ArkTS 核心篇-14-条件表达式(三目运算符)
  • 如何提高微型导轨的生产效率?
  • 使用 Visio Viewer 查看 Visio 绘图文件
  • 语义分割一站式到底怎么玩?
  • 中级统计师-统计实务-第三章 国民经济核算
  • 智能装备如何与软件结合?
  • MySQL独占间隙锁为什么会互相兼容?
  • 慢SQL优化
  • SQL 学习
  • 以声为剑,绘山河热血——刘洋洋《不惧》8月30日全网上线
  • 逆向思维下,如何把基金投资做亏?
  • 算法 --- 前缀和
  • 一文了解大模型微调
  • AWD相关知识
  • 【Python】国内可用的高速pip镜像源大全
  • 蓝牙5.3核心技术架构解析:从控制器到主机的无线通信设计
  • 知识随记-----Qt 样式表深度解析:何时需要重写 paintEvent 让 QSS 生效
  • 鸿蒙ArkTS 核心篇-15-条件渲染(组件)
  • 如何改变传统教育的消费习惯-第三代结束-第四代开启
  • 源码解析-时间轮[HashedWheelTimer]
  • 项目管理方法如何选择
  • Python实现京东商品数据自动化采集的实用指南
  • 水库/油箱/化工罐区...无线液位控制系统如何实现远程监控?
  • C++ constexpr:编译时计算的高效秘籍
  • 动态规划--Day05--最大子数组和--53. 最大子数组和,2606. 找到最大开销的子字符串,1749. 任意子数组和的绝对值的最大值
  • 音视频学习(六十):H264中的PPS
  • 基于Kubernetes Operator的自动化运维平台设计与实践
  • Ethan开发者创新项目日报 | 2025-08-30
  • OpenGeode 综合介绍(基于 GitHub 仓库)