博客
关于我
Linux配置-【12】Shell脚本编写
阅读量:794 次
发布时间:2023-02-05

本文共 1752 字,大约阅读时间需要 5 分钟。

Shell编程入门指南

  • Shell概述

    Shell是 Unix/Linux 系统中的用户界面命令行解释器,它将应用程序与 Linux 内核及硬件相连接。Shell 提供了一个灵活的命令行环境,用户可以通过输入命令逐步完成操作。

  • Shell 变量

    Shell 变量用于存储程序运行时的临时数据,变量名称通常以大写字母开头。

  • 2.1 系统变量

    系统变量是 Shell 预定义的环境变量,用于传递程序运行时的环境信息,例如 PATH(执行路径)、HOME(用户主目录)等。

    2.2 自定义变量

    用户可以定义自己的变量,通过赋值操作将命令输出结果存储起来,便于后续使用。

    2.3 静态变量

    静态变量在 Shell 中无法用 unset 命令清除,通常用于存储常量值或配置信息。

    1. 设置环境变量

      环境变量可以通过 export 命令传递给子进程,常见的做法是将多行注释写入 .bashrc 文件中,方便快速配置开发环境。

    2. 位置参数变量

      位置参数变量(Positional Arguments Variables)用于接收命令行输入参数,通过 $1 到 $9 等表示方式访问参数值。

    3. 4.1 常用位置参数变量示例

      $1 表示第一个参数,$2 表示第二个参数,以此类推。

      4.2 位置参数变量的默认值

      若命令行参数不足,Shell 提供了默认值设定方式,可减少程序依赖命令行参数的复杂性。

      1. 预定义变量

        Shell 提供了多个预定义变量,用于简化常见操作。例如,$? 表示上一条命令的退出状态码,$@ 表示命令行参数的拆分结果。

      2. Shell 运算符

        Shell 提供多种运算符,用户可以通过组合运算符完成数据处理。例如,使用 + 运算符进行数值相加, * 运算符进行数值相乘。

      3. 6.1 运算符应用示例

        将两个变量值相加:a=$1 + $2

        1. Shell 判断语句
          Shell 提供 if、case 命令用于实现条件判断,用户可以根据条件执行特定命令或脚本。
        2. 7.1 if 判断语句

          if [条件] 则执行后续命令。常用条件包括 -e(命令存在性)、-d(目录存在性)、-f(文件存在性)等。

          7.2 case 判断语句

          case 语句比 if 语句更灵活,支持多种匹配模式,如字符串匹配、文件扩展名匹配等。

          1. Shell 流程控制
            Shell 提供 for、while 循环用于实现循环控制流程。
          2. 8.1 for 循环

            for 循环用于遍历集合元素,常用于批量处理文件或项。

            8.2 while 循环

            while 循环用于重复执行命令,直到满足退出条件。

            1. 读取控制台输入

              Shell 提供 read 命令用于读取用户输入,用户可以将输入值存储到变量中。

            2. Shell 函数与自定义函数

              Shell 提供多种系统函数(如 echo、date)和自定义函数(如定义函数、函数库)。

            3. 10.1 系统函数示例

              echo 输出文本内容:echo "Hello World"
              date 显示当前时间:date

              10.2 自定义函数示例

              定义函数:function myfunc { echo "这是一个自定义函数"; }
              调用函数:myfunc

              1. Shell 编程综合案例:定时备份与清除
              2. #!/bin/bash# 定时备份脚本# 每天备份当前目录到备份目录# 并清除10天前的文件# 定义备份目录BACKUP_DIR=/data/backups# 定义日志文件LOG_FILE=/data/logs/backup.log# 备份当前目录current_date=$(date +%Y%m%d)# 创建备份文件echo "开始备份:$(date)" >> $LOG_FILEtar -czf $BACKUP_DIR/$current_date.tar.gz *# 清除10天前的文件echo "开始清除10天前文件:$(date)" >> $LOG_FILEfind $BACKUP_DIR -type d -ctime "-10" -exec rm -r {} \;# 完成备份与清除echo "备份与清除完成:$(date)" >> $LOG_FILE

                以上脚本实现了每天定时备份当前目录到指定备份目录,并自动清除10天前的备份文件功能。

    转载地址:http://rekfk.baihongyu.com/

    你可能感兴趣的文章
    Linux(3):Linux命令-文件管理
    查看>>
    Linux(4):Linux命令-用户、权限管理
    查看>>
    Linux(5):Linux命令-系统管理
    查看>>
    Linux(6):Linux网络命令
    查看>>
    Linux(7):VIM的使用
    查看>>
    Linux(8):安装JDK
    查看>>
    Linux(9):安装Tomcat
    查看>>
    Linux(centos7)上安装最新版R3.4.1
    查看>>
    Linux(CentOS)安装 Nginx
    查看>>
    Linux(CentOS)安装Mysql数据库
    查看>>
    Linux(RadHat)基础学习—软件安装
    查看>>
    linux(ubuntu)中crontab定时器命令详解 以及windows中定时器
    查看>>
    linux(乌班图)修改apt下载源
    查看>>
    Linux(六)shell操作实用技巧
    查看>>
    Linux,启动java程序的通用脚本sh
    查看>>
    Linux:-bash: pip: command not found pip
    查看>>
    Linux:/dev/tty、/dev/tty0 和 /dev/console 之间的区别
    查看>>
    Linux:bash: git: 未找到命令...
    查看>>