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

Bash 脚本基础

一、Bash 脚本基础

  • 什么是 Bash 脚本:Bash 脚本是一种文本文件,其中包含了一系列的命令,这些命令可以被 Bash shell 执行。它用于自动化重复性的任务,提高工作效率。

  • Bash 脚本的基本结构:以 #!/bin/bash 开头,表示使用 Bash 解释器来执行脚本。接下来是具体的命令和操作。

二、编写和运行第一个 Bash 脚本

  1. 创建脚本文件:使用命令 nano hello.sh 创建名为 hello.sh 的文件。

  2. 编写脚本:在文件中输入以下内容:

    bash复制

    #!/bin/bash
    echo "Hello World"
  3. 保存并退出:按 Ctrl+X 键,然后按 Y 键确认保存,最后按回车键退出 nano 编辑器。

  4. 赋予执行权限:在终端中运行 chmod u+x hello.sh 命令,赋予脚本执行权限。

  5. 运行脚本:执行 ./hello.sh 命令,即可看到输出 Hello World

三、变量的使用

  • 声明变量:变量的声明方式为 var=value,注意等号前后不能有空格。

  • 访问变量:使用 $var 的方式来访问变量的值。

  • 示例

    bash复制

    #!/bin/bash
    message="Hello World"
    echo $message

四、传递参数和用户输入

  • 传递参数:在运行脚本时,可以传递参数,例如 ./my_script.sh arg1 arg2。在脚本中,使用 $1$2 等来代表第 1、第 2 个参数。

  • 用户输入:使用 read 命令来获取用户的键盘输入,例如:

    bash复制

    #!/bin/bash
    echo "What is your name?"
    read name
    echo "Hello, $name"

五、条件语句

  • if-else 语句:用于根据条件执行不同的代码块。例如:

    bash复制

    #!/bin/bash
    if [ $(whoami) = 'root' ]; thenecho "You are root"
    elseecho "You are not root"
    fi

六、循环语句

  • for 循环:用于遍历一系列的值。例如:

    bash复制

    #!/bin/bash
    for i in {1..5}
    doecho $i
    done
  • while 循环:只要条件判断式成立,循环就会一直继续。例如:

    bash复制

    #!/bin/bash
    i=1
    while [ $i -le 5 ]
    doecho $ii=$((i+1))
    done
  • until 循环:只要条件判断式不成立则进行循环,并执行循环程序。例如:

    bash复制

    #!/bin/bash
    i=1
    until [ $i -gt 5 ]
    doecho $ii=$((i+1))
    done

七、函数的创建和使用

  • 定义函数:使用 function 函数名 () { ... } 的格式来定义函数。例如:

    bash复制

    #!/bin/bash
    function greet () {echo "Hello, $1"
    }
  • 调用函数:通过函数名来调用函数,例如 greet "Alice"

八、错误处理

  • 检查命令是否成功:使用 $? 来获取最后执行命令的退出状态,0 表示成功,非 0 表示失败。

  • 使用 set 命令set -e 可以让脚本在遇到错误时立即退出。

相关文章:

Bash 脚本基础

一、Bash 脚本基础 什么是 Bash 脚本:Bash 脚本是一种文本文件,其中包含了一系列的命令,这些命令可以被 Bash shell 执行。它用于自动化重复性的任务,提高工作效率。 Bash 脚本的基本结构:以 #!/bin/bash 开头&#x…...

SQLite Delete 语句详解

SQLite Delete 语句详解 SQLite 是一种轻量级的数据库管理系统,广泛应用于移动设备、嵌入式系统和服务器端应用。在数据库管理中,删除数据是一项基本操作。SQLite 提供了强大的删除功能,本文将详细介绍 SQLite 的 Delete 语句及其用法。 1.…...

Mysql深分页的解决方案

在数据量非常大的情况下,深分页查询则变得很常见,深分页会导致MySQL需要扫描大量前面的数据,从而效率低下。例如,使用LIMIT 100000, 10时,MySQL需要扫描前100000条数据才能找到第10000页的数据。 在MySQL中解决深分页…...

数据建模流程: 概念模型>>逻辑模型>>物理模型

数据建模流程 概念模型 概念模型是一种高层次的数据模型,用于描述系统中的关键业务概念及其之间的关系。它主要关注业务需求和数据需求,而不涉及具体的技术实现细节。概念模型通常用于在项目初期帮助业务人员和技术人员达成共识,确保对业务需…...

光谱仪与光谱相机的核心区别与协同应用

一、核心功能与数据维度 ‌光谱仪‌ ‌功能定位‌:专注单点或线状区域的光谱分析,通过色散元件(光栅/棱镜)分离波长,生成一维或二维光谱曲线,用于量化光强、吸收率等参数‌。 ‌数据维度‌:输…...

路由工程师大纲-2:结合AI技术构建路由拓扑与BGP异常检测的知识链体系

一、领域交叉技术图谱 1. 路由拓扑测绘: 图神经网络(GNN):建模网络结构,预测链路稳定性。复杂网络分析:计算节点中心性(如PageRank)、社区发现(Louvain算法)。可视化工具:Gephi/NetworkX + PyTorch Geometric(图嵌入)。2. BGP异常检测: 时间序列模型:LSTM/Tran…...

运行时智控:PanLang 开发者指南(一)运行时系统核心模块实现——PanLang 原型全栈设计方案与实验性探索5

运行时智控:PanLang 开发者指南(一)运行时系统核心模块实现——PanLang 原型全栈设计方案与实验性探索5 文章目录 运行时智控:PanLang 开发者指南(一)运行时系统核心模块实现——PanLang 原型全栈设计方案与…...

再次理解 Spring 中的 IOC、DI、AOP 与多态

目录 引言 1. IOC(控制反转) 1.1 什么是 IOC? 1.2 IOC 的核心思想 1.3 IOC 的实现 2. DI(依赖注入) 2.1 什么是 DI? 2.2 DI 的实现方式 2.3 DI 的核心作用 3. AOP(面向切面编程&#x…...

rocky linux 与centos系统的区别

Rocky Linux 和 CentOS 都是基于 Red Hat Enterprise Linux(RHEL)的社区发行版,但两者在目标定位、更新策略和社区管理上有显著差异。以下是核心区别的详细对比: 一、背景与定位 特性Rocky LinuxCentOS起源由 CentOS 联合创始人…...

操作系统导论——第13章 抽象:地址空间

一、早期系统 从内存来看,早期的机器并没有提供多少抽象给用户。基本上,机器的物理内存如图13.1所示 操作系统曾经是一组函数(实际上是一个库),在内存中(在本例中,从物理地址0开始)&…...

C# 调用 VITS,推理模型 将文字转wav音频net8.0 跨平台

一、系统环境 操作系统:win10,win11 运行环境:dotnet8 工具:命令行,powershell 开源库:sherpa-onnx 二、工具和源码下载 开源库:https://k2-fsa.github.io/sherpa/onnx/index.html 运行环境下载 https://dotnet.microsoft.c…...

织梦DedeCMS如何获得在列表和文章页获得顶级或上级栏目名称

获得顶级或二级栏目的名称,都需要修改php文件,修改的文件【/include/common.func.php】将代码插入到这个文件的最下面即可; 一、获得当前文章或栏目的【顶级栏目】名称 1、插入顶级栏目代段 //获取顶级栏目名 function GetTopTypename($id…...

深度学习仓库代码结构认识

规范化深度学习代码仓库的目录结构和文件组织方式,以便于代码的管理、协作和复现性。 一种供参考的目录树结构: . ├── README.md ├── requirements.txt ├── data/ ├── docs/ ├── logs/ └── src/├── configs/│ └── config.y…...

C#基于MVC模式实现TCP三次握手,附带简易日志管理模块

C#基于MVC模式实现TCP三次握手 1 Model1.1 ServerModel1.2 ClientModel1.3 配置参数模块1.4 日志管理模块1.4.1 数据结构1.4.1 日志管理工具类1.4.1 日志视图展示1.4.1.1 UcLogManage.cs1.4.1.2 UcLogManage.Designer.cs 2 视图(View)2.1 ViewServer2.1.…...

6、linux c 线程 -下

1. 线程的取消 意义 随时终止一个线程的执行。 函数 #include <pthread.h> ​ int pthread_cancel(pthread_t thread); pthread_t thread&#xff1a;要取消的线程 ID。 返回值 成功时返回 0。 失败时返回非零错误码。 注意 线程的取消需要有取消点&#xff0c…...

分布式算法:Paxos Raft 两种共识算法

1. Paxos算法 Paxos算法是 Leslie Lamport&#xff08;莱斯利兰伯特&#xff09;在 1990 年提出的一种分布式系统共识算法。也是第一个被证明完备的共识算法&#xff08;前提是不存在恶意节点&#xff09;。 1.1 简介 Paxos算法是第一个被证明完备的分布式系统共识算法。共识…...

什么是数据库监控

数据库监控是一个综合的过程&#xff0c;涉及观察、分析和优化组织内数据库的性能、运行状况和可用性。通过持续跟踪查询执行时间、CPU使用率、内存消耗和存储I/O等指标&#xff0c;数据库监控使管理员能够主动识别和解决潜在问题。这种对数据库操作的实时可见性对于确保应用程…...

Java学习总结-泛型

什么是泛型&#xff1f; 定义 类、接口、方法时&#xff0c;同时声明了一个或多个类型变量&#xff08;如&#xff1a;<E>&#xff09;&#xff0c;称为泛型类、泛型接口、泛型方法、他们统称为泛型。public class ArrayList<E>{ }。 有什么作用呢&#xf…...

基于深度学习的相位调制算法步骤

1.构建网络结构 2.制作数据集 3.训练网络 4.引入评价指标 5.迭代优化 总结 通过以上步骤&#xff0c;可以实现基于深度学习的相位调制算法&#xff1a; 使用 U-Net 构建神经网络。 生成数据集并训练网络。 使用训练好的网络预测相位分布。 通过相关系数 γ 评估调制效果&…...

curl使用报错error LNK2001: 无法解析的外部符号 __imp__CertCloseStore@8

使用curl静态库libcurl_a.lib 时报错&#xff0c;内容如下&#xff1a; 1>libcurl_a.lib(openssl.obj) : error LNK2001: 无法解析的外部符号 __imp__CertCloseStore8 1>libcrypto.lib(libcrypto-lib-e_capi.obj) : error LNK2001: 无法解析的外部符号 __imp__CertClose…...

Go语言的基础类型

一基础数据类型 一、布尔型&#xff08;Bool&#xff09; 定义&#xff1a;表示逻辑真 / 假&#xff0c;仅有两个值&#xff1a;true 和 false内存占用&#xff1a;1 字节使用场景&#xff1a;条件判断、逻辑运算 二、数值型&#xff08;Numeric&#xff09; 1. 整数类型&…...

动力保护板测试仪:电池安全的坚实守护者

在新能源技术日新月异的今天&#xff0c;电池作为各类电子设备的心脏&#xff0c;其安全性与可靠性成为了行业内外关注的焦点。而动力保护板&#xff0c;作为电池系统中的重要组成部分&#xff0c;承担着精准调控电池充放电、防止电池过充、过放、短路等危险情况的重任。然而&a…...

Lineageos 22.1(Android 15)制定应用强制横屏

一、前言 有时候需要系统的某个应用强制衡平显示&#xff0c;不管他是如何配置的。我们只需要简单的拿到top的Task下面的ActivityRecord&#xff0c;并判断包名来强制实现。 二、调整wms com.android.server.wm.DisplayRotation /*** Given an orientation constant, return…...

【Python】【PyQt5】设置事件绑定(例为按钮点击显示提示框)

前言 上篇文章我们讲了如何创作一个UI界面&#xff0c;并将其使用代码显示出来&#xff0c;这篇文章我们来讲讲事件的绑定 为增加文章趣味性&#xff0c;此篇文章我们将以点击窗口中的按钮来后并显示一个提示框 修改上次代码&#xff08;优化&#xff09; 上篇文章我所讲的要…...

node-ddk, electron组件, 自定义本地文件协议,打开本地文件

node-ddk 文件协议 https://blog.csdn.net/eli960/article/details/146207062 也可以下载demo直接演示 http://linuxmail.cn/go#node-ddk 安全 考虑到安全, 本系统禁止使用 file:/// 在主窗口, 自定义文件协议,可以多个 import main, { NODEDDK } from "node-ddk/m…...

SpringBoot-3-JWT令牌

目录 引入 引入依赖 拦截器 创建工具类 创建拦截器的包及拦截器 注册拦截器 修改一下登录成功后token的代码 测试 引入 试想一下&#xff0c;以上我们的访问都是直接访问对应的接口。比如说用户登录的时候就访问登录的接口。 那么如果有人他不访问你的登录接口&#…...

ChatGPT vs DeepSeek vs Copilot vs Claude:谁将问鼎AI王座?

李升伟 整理 2025年的人工智能领域创新涌动&#xff0c;ChatGPT、DeepSeek、Copilot和Claude四大模型各领风骚。这些AI系统各具特色&#xff0c;分别专注于编程、创意写作、技术推理和AI伦理等不同领域。本文将深入解析这些AI模型的功能特性及其优势领域。 核心AI模型解析 C…...

git使用经验(一)

git使用经验&#xff08;一&#xff09; 我之前已经下载了别人的代码&#xff0c;我想在此基础上进行修改&#xff0c;并移动到自己的私有仓库&#xff0c;方便上传到自己的私有仓库自己进行版本控制 git clone下来别人的代码&#xff0c;删除有关git的隐藏文件 进入到自己的…...

文件上传的小点总结

1.文件上传漏洞 服务器端脚本语言对上传文件没有严格的验证和过滤&#xff0c;就可以给攻击者上传恶意脚本文件的可能。 文件上传检测绕过&#xff1a; 简单思路&#xff1a;&#xff08;这里以前端上传图片为例&#xff09; ①开启phpstudy&#xff0c;启动apache即可&…...

基于WebRtc,GB28181,Rtsp/Rtmp,SIP,JT1078,H265/WEB融合视频会议接入方案

智能融合视频会议系统方案—多协议、多场景、全兼容的一站式视频协作平台 OvMeet,LiveMeet针对用户​核心痛点实现功能与用户价值 &#xff0c;Web平台实现MCU多协议&#xff0c;H265/H264等不同编码监控&#xff0c;直播&#xff0c;会议&#xff0c;调度资源统一融合在一套界…...