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

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.dtcms.com/a/358780.html

相关文章:

  • 本地运行 Ollama 与 DeepSeek R1 1.5B,并结合 Open WebUI 测试
  • 告别图片处理焦虑:用imgix实现智能、实时且高效的视觉媒体交付(含案例、截图)
  • Linux shell命令扩涨
  • HarmonyOS Router 基本使用详解:从代码示例到实战要点
  • 免费开源的 Gemini 2.5 Flash 图片生成器
  • Robolectric如何启动一个Activity
  • Coze源码分析-API授权-删除令牌-后端源码
  • SQL注入6----(其他注入手法)
  • 普蓝自研AutoTrack-4X导航套件平台适配高校机器人实操应用
  • 《Java反射与动态代理:从原理到实践》
  • 以声为剑,绘山河热血——刘洋洋《不惧》8月30日全网上线
  • 【深入解析——AQS源码】
  • OpenCV安装及其开发环境配置(Windows系统Visual Studio 2022)
  • 【物联网】MQTT / Broker / Topic 是什么?
  • 【分享】如何显示Chatgpt聊天的时间
  • 【Android】JSONObject和Gson的使用
  • 数据结构青铜到王者第十三话---优先级队列(堆)(2)
  • 中级函数三
  • 如何使用 DeepSeek 帮助自己的工作?—— 从效率工具到能力延伸的实战指南
  • BGP路由协议(四):工作原理
  • Redis 持久化配置
  • 使用python格式化nginx配置文件
  • 【系统分析师】高分论文:论系统测试技术及应用
  • xAI发布全新编码模型 grok‑code‑fast‑1!
  • SpringBoot防止重复提交(2)
  • day44-Ansible变量
  • 联合体和枚举——嵌入式学习笔记
  • 每日算法题【二叉树】:二叉树的最大深度、翻转二叉树、平衡二叉树
  • 【系统分析师】高分论文:论软件的系统测试及应用
  • 栈溢出问题