Shell 编程快速入门指南

Shell 编程快速入门指南

一、Shell 基础概念

1.1 什么是 Shell

Shell 是一个命令解释器,它的核心作用是解释执行用户输入的命令及程序。用户在命令行输入的每一条指令,都由 Shell 接收并解释执行。

  • 交互模式:用户输入一条命令,Shell 立即解释执行并返回结果的对话方式
  • 系统接口:Shell 位于操作系统外层,负责用户与系统内核间的通信
  • 不同系统的默认 Shell
    • Linux:Bourne Again shell (bash)
    • Solaris/FreeBSD:Bourne shell (sh)
    • AIX:Kom Shell (ksh)

在这里插入图片描述

1.2 什么是 Shell 脚本

当一系列命令或程序语句不在命令行直接执行,而是通过程序文件执行时,该文件被称为 Shell 脚本

  • 非交互方式:通过文件一次性执行多条命令和语句
  • 功能强大:结合命令、变量和流程控制语句形成自动化脚本
  • 类似概念:类似于 Windows 中的批处理程序 (*.bat)

二、为什么要学习 Shell 编程

2.1 Shell 编程的应用价值

  1. 文本处理优势:擅长处理纯文本数据
    • Linux 系统中绝大多数配置文件、日志文件都是文本格式
    • 适合处理 NFS、Rsync、Httpd、Nginx 等服务的配置和日志
  2. 自动化运维:系统管理和自动化运维的核心工具
    • 检查多台服务器运行状态
    • 自动化部署和升级服务器
    • 日常运维任务自动化
  3. 职业发展:合格 Linux 管理员/运维工程师的必备技能
    • 能够熟练编写 Shell 脚本
    • 能够阅读和理解系统及软件附带的脚本

2.2 学习 Shell 编程的基础要求

  1. 编辑器熟练:熟练使用 vim 编辑器及配置(如 .vimrc
  2. Linux 命令:掌握常用 Linux 命令并能熟练使用
  3. 文本处理:熟练掌握正则表达式及三剑客(grep、sed、awk)
  4. 系统知识:熟悉 Linux 网络服务部署、优化和故障排查

2.3 如何有效学习 Shell 编程

核心方法:多练习 → 多思考 → 多总结 → 循环反复

具体建议

  1. 掌握 Shell 脚本基本语法
  2. 从简单判断和循环开始练习
  3. 多模仿、多练习、多思考
  4. 变量命名规范(推荐驼峰命名法)
  5. 理解而非简单复制代码
  6. 形成自己的脚本开发风格

2.4 脚本语言分类

Shell 是弱类型语言(无需预先定义变量类型)

Unix/Linux 中主要 Shell 类型

  1. Bourne shell 系列
    • sh:Bourne shell
    • ksh:Kom shell
    • bash:Bourne Again shell(Linux 默认)
  2. C shell 系列
    • csh:由 Berkeley 大学开发,类 C 语言语法
    • tcsh:csh 的增强版,增加命令补全等功能

三、创建第一个 Shell 脚本

3.1 脚本编写基础

3.1.1 脚本开头(Shebang)

必须在脚本第一行指定解释器:

#!/bin/bash

#!/bin/sh
  • #! 称为幻数,内核根据其后内容确定脚本解释器
  • 必须位于脚本第一行(否则视为注释)
  • 规范写法推荐使用 #!/bin/bash
3.1.2 脚本注释
  • 使用 # 符号添加注释
  • 注释可独立成行或跟在命令后
  • 注释内容不会被解释执行
  • 重要:尽量避免使用中文注释
3.1.3 bash 与 sh 的关系
$ ls -l /bin/sh
lrwxrwxrwx. 1 root root 4 112 17:33 /bin/sh -> bash
  • sh 是 bash 的软链接
  • 大多数情况下 #!/bin/bash#!/bin/sh 无区别
  • 规范写法推荐使用 #!/bin/bash

3.2 Shell 脚本的执行方式

3.2.1 脚本执行流程

Shell 脚本执行时:

  1. 查找系统环境变量 ENV
  2. 加载环境变量文件
  3. 从上至下、从左至右执行命令
  4. 遇到子脚本先执行子脚本内容

在这里插入图片描述

3.2.2 四种执行方式
  1. 使用 bash/sh 命令执行

    bash

    bash script.sh
    sh script.sh
    
    • 适用于脚本无执行权限或未指定解释器的情况
  2. 直接执行脚本(需要执行权限)

    bash

    chmod +x script.sh  # 添加执行权限
    /path/script.sh     # 绝对路径
    ./script.sh         # 相对路径
    
  3. 使用 source 或 . 执行

    bash

    source script.sh
    . script.sh
    
    • 特点:在当前 Shell 进程中执行(不创建新进程)
    • 重要:子脚本中的变量和函数可在当前 Shell 中使用
  4. 使用输入重定向或管道

    bash

    bash < script.sh
    cat script.sh | bash
    

3.3 Shell 脚本开发规范

3.3.1 基本规范
  1. 指定解释器:脚本首行必须指定解释器

  2. 添加版本信息

    bash

    #!/bin/bash
    # Date:16:29 2022-3-30
    # Author:Created by laoma
    # Description:This script is used to...
    # Version:2.0
    
  3. 避免中文:尽量使用英文注释和内容

  4. 文件扩展名:使用 .sh 作为脚本扩展名

  5. 固定存放路径:脚本存放在固定目录中

3.3.2 代码书写习惯
  1. 成对符号一次性写出{} [] '' `` ""

  2. 中括号保留空格[ condition ] 两端至少一个空格

  3. 先完成流程控制结构

    bash

    # if 语句结构
    if 条件内容;then
      内容
    fi
    
    # for 循环结构
    for
    do
      内容
    done
    
  4. 代码缩进:通过缩进提高代码可读性

    注意:尽量使用空格控制缩进,使用tab缩进可能导致意外错误。

  5. 变量引用规范

    • 字符串变量值加引号:laoma_file="test.txt"
    • 强引用用单引号:welcome_string='******'
    • 命令引用用反引号:week_day="$(date +%A)"
  6. 使用英文符号:所有符号都使用英文状态下的符号


缩进提高代码可读性

注意:尽量使用空格控制缩进,使用tab缩进可能导致意外错误。

  1. 变量引用规范

    • 字符串变量值加引号:laoma_file="test.txt"
    • 强引用用单引号:welcome_string='******'
    • 命令引用用反引号:week_day="$(date +%A)"
  2. 使用英文符号:所有符号都使用英文状态下的符号


提示:通过配置 ~/.vimrc 可以设置 vim 编辑时自动添加脚本头信息,提高开发效率。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值