Shell脚本编程 — Shell Script

news2024/11/24 9:24:13

Shell脚本编程 — Shell Script

  • 基本概念
  • 示例脚本
    • 示例1:备份文件
    • 示例2:监控磁盘使用情况
    • 示例3:批量重命名文件
  • 运行脚本
  • 提示

Shell脚本是一种编程语言,主要用于在Unix/Linux系统中自动化执行任务。它通过编写一系列的命令来完成特定的任务。

基本概念

  1. Shebang: 每个Shell脚本的开头通常都有一个shebang行,用于指定解释器。例如:

    #!/bin/bash
    
  2. 注释: 使用 # 来添加注释。

    # 这是一个注释
    
  3. 变量: 变量不需要声明,直接赋值即可。

    name="Kimi"
    echo "Hello, $name"
    
  4. 条件语句:

    if [ "$name" = "Kimi" ]; then
        echo "Hi, Kimi!"
    else
        echo "Who are you?"
    fi
    
  5. 循环:

    for i in 1 2 3 4 5; do
        echo "Number: $i"
    done
    
    while [ $i -le 5 ]; do
        echo "Number: $i"
        i=$((i + 1))
    done
    
  6. 函数:

    greet() {
        echo "Hello, $1"
    }
    
    greet "Kimi"
    

示例脚本

示例1:备份文件

这个脚本将指定目录中的文件备份到另一个目录。

#!/bin/bash

# 源目录
SOURCE_DIR="/path/to/source"
# 备份目录
BACKUP_DIR="/path/to/backup"

# 创建备份目录,如果不存在
mkdir -p "$BACKUP_DIR"

# 复制文件
cp -r "$SOURCE_DIR"/* "$BACKUP_DIR"

echo "备份完成!"

示例2:监控磁盘使用情况

这个脚本会检查磁盘使用情况,如果超过指定阈值,则发送警告邮件。

#!/bin/bash

# 设置磁盘使用阈值
THRESHOLD=80
# 设置邮件接收者
EMAIL="your_email@example.com"

# 获取当前磁盘使用情况
USAGE=$(df / | grep / | awk '{ print $5 }' | sed 's/%//g')

if [ "$USAGE" -gt "$THRESHOLD" ]; then
    echo "磁盘使用率已超过 $THRESHOLD%" | mail -s "磁盘使用警告" "$EMAIL"
fi

示例3:批量重命名文件

这个脚本将目录中的所有 .txt 文件重命名为 .bak 文件。

#!/bin/bash

# 目标目录
TARGET_DIR="/path/to/directory"

# 遍历目录中的所有 .txt 文件
for file in "$TARGET_DIR"/*.txt; do
    # 获取文件名(不包括扩展名)
    base=$(basename "$file" .txt)
    # 重命名文件
    mv "$file" "$TARGET_DIR/$base.bak"
done

echo "文件重命名完成!"

运行脚本

  1. 赋予执行权限:

    chmod +x script.sh
    
  2. 运行脚本:

    ./script.sh
    

提示

  • 使用 set -e 可以让脚本在遇到错误时立即退出。
  • 使用 set -x 可以在执行每一行命令之前打印该命令,方便调试。

当然可以!Shell脚本是一种用于在Unix/Linux系统中自动化执行任务的脚本语言。它通过编写一系列的命令来完成特定的任务。下面我将详细解释Shell脚本的各个方面,包括基本语法、变量、控制结构、函数、输入输出等。

Shell

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1879712.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

49 - 列出指定时间段内所有的下单产品(高频 SQL 50 题基础版)

49 - 列出指定时间段内所有的下单产品 -- 指定2020年2月的方法 -- (1) order_date between 2020-02-01 and 2020-02-29 -- (2) order_date like 2020-02% -- (3) DATE_FORMAT(order_date, "%Y-%m") "2020-02" -- (4) LEFT(order_date, 7) 或 subst…

AI Agent:技术原理与未来趋势

在人工智能的快速发展中,AI Agent作为一项创新技术,正逐渐成为研究和应用的热点。AI Agent不仅仅是执行命令的程序,它们能够感知环境、做出决策并采取行动,展现出类似人类的群体协作能力。本文将探讨AI Agent的技术原理、开源框架…

解决idea中git无法管理项目中所有需要管理的文件

点击文件->设置 选择版本控制—>目录映射 点击加号 设置整个项目被Git管理

淘宝天猫小学升级复习学习资料怎么领取大额优惠券返利购物更省钱?

暑假是一个很好的机会来回顾和巩固过去一年里学到的知识。通过复习学习资料,孩子可以加深对基础知识的理解和记忆,为下一学年的学习打下坚实的基础。对于即将升入更高年级的孩子来说,他们可能会面临更加复杂和深入的学习内容。购买升学复习资…

图灵虚拟机配置

导入虚拟机 点击新建,选择虚拟硬盘文件 环境机器.vmdk 配置网络

pcap包常见拆分方法

文章目录 Wireshark 拆分流量包SplitCap使用简介魔数报错示例结果 在进行流量分析时,经常需要分析pcap流量包。但是体积过大的流量包不容易直接分析,经常需要按照一定的规则把它拆分成小的数据包。 这里统一选择cic数据集里的Thursday-WorkingHours.pcap…

10大内网安全管理系统!企业内网安全必备系统

内网安全管理系统对于维护企业网络安全至关重要,它们帮助监控、管理内部网络资源,防止数据泄露和安全威胁。以下是十款知名的内网安全管理系统。 1. 安企神终端安全管理系统 详细介绍: 安企神是针对企业内网安全需求设计的一款综合管理系统&…

HTML5的多线程技术:Web Worker API

Web Workers API 是HTML5的一项技术,它允许在浏览器后台独立于主线程运行脚本,即允许进行多线程处理。这对于执行密集型计算任务特别有用,因为它可以防止这些任务阻塞用户界面,从而保持网页的响应性和交互性。Web Workers在自己的…

计算机图形学笔记----矩阵

矩阵和标量的运算 ,则 矩阵与矩阵相乘 的矩阵A,的矩阵B。两矩阵,结果为的矩阵,第一个矩阵的列数必须和第二个矩阵的行数相同,否则不能相乘 ,中的每个元素等于A的第i行所对应的矢量和B的第j列所对应的矢量进行矢量点…

Django 页面展示模型创建表的数据

1,添加视图函数 Test/app8/urls.py from django.shortcuts import render from .models import Userdef create_user(request):if request.method POST:username request.POST.get(username)email request.POST.get(email)# ... 获取其他字段的值# 创建用户实例…

新手练习项目 7:猜数字游戏

名人说:莫听穿林打叶声,何妨吟啸且徐行。—— 苏轼《定风波莫听穿林打叶声》 Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder) 目录 一、项目描述二、项目实现三、项目步骤四、项目扩展方向 更多项目内容,请关注我、订…

源码学习:文件描述符

在进程描述学习中,扯到了max_fds,接着就联想到了日常运维中常见的ulimit参数、sysctl内核参数,原来以为max_fds与这些个关联性比较强,但经过一早上折腾以后,发现其实还是有一些差距的。但是在学习过程中,却…

java基于ssm+jsp 固定资产管理系统

1前台首页功能模块 固定资产管理系统,在系统首页可以查看首页、设备信息、论坛信息、我的、跳转到后台等内容,如图1所示。 图1前台首页功能界面图 注册,在注册页面可以填写用户名、密码、姓名、性别、头像、身份证、手机等详细内容&#xff…

ASP.NET CORE应用针对IIS有哪两种部署模式?

一、ASP.NET CORE Core Module IIS其实也是按照管道的方式来处理请求的,但是IIS管道和ASP.NET CORE中间件管道有本质的不同。对于部署在IIS中的Web应用来说,从最初接收到请求到最终将响应发出去,这段处理流程被细分为一系列固定的步骤&#x…

设计模式-状态模式和策略模式

1.状态模式 1.1定义 当一个对象的内在状态改变时允许根据当前状态作出不同的行为; 1.2 适用场景 (1)一个对象的行为取决于它的状态,并且它必须在运行时根据状态来决定其行为. (2)代码中包含了大量的与状态有关的条件语句,例如:一个操作含有庞大的多分值语句(if…

【信息安全及等保】网络安全等级保护技术建议书(word原件)

1信息系统详细设计方案 1.1安全建设需求分析 1.1.1网络结构安全 1.1.2边界安全风险与需求分析 1.1.3运维风险需求分析 1.1.4关键服务器管理风险分析 1.1.5关键服务器用户操作管理风险分析 1.1.6数据库敏感数据运维风险分析 1.1.7“人机”运维操作行为风险综合分析 1.2…

3D打印随形水路在注塑生产中的显著优势

3D打印技术在模具制造中已崭露头角,特别是在注塑生产中,3D打印随形水路的应用正变得日益普遍。 首先,该技术能精准优化模具温度。3D打印随形水路随形冷却的设计让模具温度更加均匀,水路更贴近产品,有效提升产品品质和缩…

不知道自己的优势擅长和兴趣爱好,我该如何填报高考志愿选专业?

天生我才必有用,每个人都是独立的个体,拥有自己的优势和擅长,当然这个优势和擅长,不是和别人对比,而是和自己对比产生的。 如果说你不知道自己的优势擅长,不知道自己的兴趣和爱好,那只不过是你没…

李一桐遭遇蜈蚣惊魂

李一桐遭遇“蜈蚣惊魂”!刘宇宁展现真男人本色在娱乐圈的幕后,总有一些心跳加速的惊险。近日,李一桐在拍戏时遭遇了一场“蜈蚣惊魂”,让无数粉丝和网友为她捏了一把冷汗。而在这场惊险的遭遇中,刘宇宁展现出了真男人的…

[寄宿日记]韩漫日漫无删减完整版,免费在线观看漫画

[寄宿日记]韩漫日漫无删减完整版,免费在线观看漫画 不能多说,怕审-核不过,自己看图吧。 想要的在这里: https://blog.csdn.net/qq_42098517/article/details/140079915 https://gitee.com/zzwuweijun/manhua/blob/master/README…