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

Shell 脚本基础笔记

一 shell脚本概述

Shell 脚本是一种用 Shell 命令编写的脚本程序,用于在 Unix/Linux 系统的命令行环境中自动化执行任务。
它由一系列命令、逻辑控制语句(如条件判断、循环)和函数组成,保存为文本文件(通常以 .sh 为扩展名),由 Shell 解释器(如 Bash、Zsh)逐行解析执行。 

通过/etc/shells可查看系统支持的 Shell 类型,常见包括:

sh(Bourne Shell):Unix 系统中 root 默认 Shell,简洁轻量。

bash(Bourne Again Shell):Linux 默认 Shell,功能强大,兼容 sh。

csh:语法类似 C 语言,用于 BSD 系统。

ksh:兼容 sh 并吸收 csh 特性,适合复杂脚本。

Shell 脚本的核心特点

  1. 基于命令行:直接调用系统命令(如 lsgrepawk),无需编译。

  2. 轻量级:适合快速开发小型自动化任务。

  3. 跨平台性:在支持相同 Shell 的系统(如 Linux、macOS)中通用。

脚本格式

脚本文件通常以 #!/bin/bash 开头,这被称为 Shebang,作用是指定该脚本使用 bash 解析器来执行。例如:

#!/bin/bash
# 这是一个简单的 Shell 脚本
echo "Hello World!"  # 输出文本
mkdir backup         # 创建目录
cp *.txt backup/     # 复制所有 txt 文件到 backup 目录

二 Shell脚本中的基本元素

基本结构

1.脚本幻数(Shebang)

脚本第一行的 #!/bin/bash (常见 ),指定脚本使用的 Shell 解析器,告诉系统用什么程序来解释执行脚本内容。

#!/bin/bash

2.命令

可执行的语句,是实现脚本功能的核心。比如 echo 用于输出文本,ls 用于列出目录内容 ,cd 用于切换目录等。

3.注释

单行注释:以 # 开头,用于对某一行代码或脚本某部分功能进行说明,提高脚本可读性,如 # 这是一个输出问候语的脚本 。

多行注释:可利用 :<<'END' 和 END 实现,END 可自定义,如 :<<'COMMENT' 与 COMMENT 配对 。

 4.变量

系统变量:如 $HOME(用户主目录 )、$PWD(当前工作目录 )等,由系统定义和维护。

自定义变量:用户自己定义的变量,如 name=Alice ,注意等号两边不能有空格。

特殊变量$0(脚本名 )、$1 - $9(脚本参数 )、$#(参数个数 )、$?(上一命令退出状态 )等。

5.运算符

数值运算:如 +(加 )、-(减 )、*(乘 )、/(除 )、%(取余 ) ,可通过 ((运算式)) 或 expr 命令进行运算。

条件判断:如 -eq(等于 )、-ne(不等于 )、-gt(大于 )等 ,配合 [ 条件判断式 ] 进行条件判断。

6.流程控制语句

条件判断if - then - elif - else - fi 结构,根据条件执行不同代码块。

循环语句for 循环用于遍历列表或指定范围;while 循环在条件为真时重复执行代码块;until 循环在条件为假时重复执行代码块。

其他case - esac 用于多条件分支判断;break 用于跳出循环;continue 用于跳过本次循环的剩余部分,继续下一次循环。

7.函数

可将重复使用的代码块封装成函数,提高代码复用性,定义格式如 函数名() { 程序 } ,调用时直接写函数名。

8.脚本调试与退出值

调试方法

使用sh -x 脚本名显示脚本执行过程,+开头的行表示正在执行的命令,便于定位错误。

 退出值

定义:命令执行后的状态码(0~255),0 表示成功,非 0 为失败。

查看:执行命令后,用echo $?查看退出值。

修改:在脚本中用exit 数值指定退出值,如exit 66

示例:

#!/bin/bash  
# 作者:czg  
# 日期:2025/05/29  
# 功能:输出系统信息  echo "当前用户:$czg"  
echo "当前路径:$PWD"  
date  
exit 0  # 正常退出  

三 shell脚本的作用

Shell 脚本的主要作用是提升效率和实现自动化,尤其在系统管理、运维、数据处理等领域中不可或缺。

核心作用:


1.自动化重复操作

例:批量重命名文件、定期清理日志、自动备份数据。

替代手动逐条输入命令,减少人为错误。

2.简化复杂任务

例:一键部署服务、集成多步骤流程(如下载数据 → 处理 → 上传结果)。 

通过逻辑控制(如 if、for)组合多个命令。

3.系统管理与监控

例:检查磁盘空间、监控进程状态、发送报警邮件。

直接调用系统工具(如 df、ps、cron)。

4.快速原型开发

例:临时测试某个功能或流程。

无需编译,修改后立即运行。

四 脚本执行方法

  1. 当前环境执行(不创建子进程)

    • 命令:./脚本名(需赋予执行权限,chmod +x 脚本名)或source 脚本名/./脚本名(无需权限)。
    • 特点:在当前 Shell 进程中运行,影响当前环境变量。
  2. 指定环境执行(创建子进程)

    • 命令:sh 脚本名bash 脚本名,脚本无需执行权限。
    • 特点:在子进程中运行,不影响当前环境。
vim lee.sh
#!/bin/bash 
cat
.lee.sh #当前
source lee.sh #当前
sh lee.sh #指定

五 Shell 脚本的典型应用场景:

  1. 日常运维:自动化日志切割、清理过期文件、服务状态监控。

  2. 部署与发布:一键编译代码、打包应用、更新服务器。

  3. 数据处理:批量转换文件格式、提取文本内容、生成统计报表。

  4. 开发辅助:运行测试用例、生成文档、环境配置。

相关文章:

  • 车载通信网络 --- CAN FD与CAN XL
  • 计算机毕业设计酒店后台管理系统(vue+springboot+mysql+开题+论文)
  • 切片器导航-大量报告页查看的更好方式
  • 免费开源批量图片格式转换工具
  • STM32F407VET6学习笔记7:Bootloader跳转APP程序
  • 数据可视化(第4、5、6次课)
  • 亚远景-ASPICE与ISO 26262:适用范围与应用场景的差异分析
  • 嵌入式鸿蒙系统中水平和垂直以及图片调用方法
  • 玛哈特校平机:金属板材加工的精整专家
  • 计算机网络之差错控制中的 CRC(循环冗余校验码)
  • 大模型调用数据库表实践:基于自然语言的SQL生成与数据查询系统
  • SSH免密登录其它用户脚本
  • 微小店推客系统开发:技术赋能流量裂变,SEO驱动精准获客
  • [网页五子棋][匹配模块]用户管理器可能存在的问题以及解决办法(线程安全、多开问题)
  • EMQX将社区版和企业版统一到一个强大的 EMQX 平台
  • OAuth协议中的Token、Ticket
  • 数据可视化的定义和类型
  • C++中std::cout 的输出格式与数值精度使用详解
  • HarmonyOS NEXT~鸿蒙开发能力:HarmonyOS SDK AI 全解析
  • [ctfshow web入门] web78
  • 找个做网站的/推广网站都有哪些
  • 网站页脚设计的几个小技巧/万网域名查询官网
  • 网站定制开发 团队/成都seo培训班
  • wordpress 采集教程/网站seo优化报告
  • 番禺网站建设企业/网站关键词有哪些
  • 984网站建设项目/产品质量推广营销语