云计算(第二阶段):mysql后的shell
-
第一章:变量
-
前言
-
什么是shell
- Shell 是一种提供用户与操作系统内核交互的工具,它接受用户输入的命令,解释后交给操作系统去执行。它不仅可以作为命令解释器,还可以通过脚本完成一系列自动化任务。
-
shell的特点
- 跨平台:大多数 Shell 都可以在不同的类 UNIX 系统上运行,包括 Linux 和 macOS。
- 易于编写脚本:用户可以通过编写脚本来实现自动化操作,大大简化了复杂任务的执行。
- 灵活性:Shell 支持多种内置命令,并允许通过管道、重定向等机制,将多个命令组合起来使用。
- 用户友好:Shell 允许用户自定义环境变量、快捷命令和别名,增强了用户体验。
- 强大的命令处理:支持控制流、条件判断、循环等逻辑操作,具备一定的编程功能。
-
shell可以做什么
- 文件管理:通过命令创建、删除、复制、移动文件或目录。
- 系统管理:执行系统管理任务,如查看和终止进程、监控系统状态、管理用户和权限。
- 自动化任务:通过编写 Shell 脚本,自动执行批量任务,比如备份、日志管理等。
- 程序执行:可以调用和运行各种程序、脚本或应用,并能处理它们的输出结果。
- 网络操作:通过命令控制网络接口,进行 FTP、SSH 等网络操作。
-
shell的执行方式
-
交互式执行:用户在命令行提示符下输入一条命令,Shell 立即解释并执行该命令。执行结束后,返回命令行等待下一条输入。
-
脚本式执行:用户将多个命令写入一个文件(脚本文件),然后让 Shell 执行该文件中的命令。通过这种方式,用户可以将重复性任务自动化。
-
先写一个简单的脚本
-
#简单的不标准test使用 echo 'nihao' #shell没有结束符,换行结束,有些用;结束但是很少,还常用用下面的方式执行
-
-
sh 文件名.sh
-
bash 文件名.sh
-
. 文件名(.+空格).sh
-
soucre 文件名.sh
-
./文件名.sh
-
区别
-
sh,bash是告诉计算机无论脚本的 Shebang 行是什么是什么都用sh,bash执行,当然其实/usr/bin/sh是/usr/bin/bash的软连接(脚本在新的子 Shell 中执行,不会影响当前 Shell 的环境变量和设置)
-
-
.表示source:直接在当前 Shell 环境中执行脚本文件。
.是一个 Shell 内置命令,等同于source -
./:在一个新的子 Shell 中执行脚本,并且会根据脚本中的 Shebang 行指定的解释器来运行,要执行权限
-
-
-
-
shell的解释器在哪
- 查看当前使用的 Shell:在命令行输入
echo $SHELL可以查看当前使用的 Shell 解释器路径。 - 常见 Shell 解释器路径:
/bin/bash:Bash 的路径。/bin/sh:Bourne Shell 的路径。
- 查看当前使用的 Shell:在命令行输入
-
shell脚本的建议格式
-
#!/bin/bash #Shebang行:使用 #!/bin/bash 指定脚本应由 Bash 解释器运行。 #----------------------------------- # 脚本名称: backup_script.sh # 描述: 该脚本用于将指定的源目录备份到目标目录, # 并记录操作日志,处理潜在的错误。 # 作者: Your Name # 日期: 2024-10-13 # 版本: 1.0 #-----------------------------------# 调试模式设置: # 开启严格模式,确保脚本执行时遇到错误会立即退出: # -e: 当命令执行失败时退出脚本。 # -u: 使用未定义的变量时退出。 # -o pipefail: 如果管道中的任一命令失败,整个管道失败。 set -euo pipefail#-----------自己的代码写在下面-------------这只是建议,可以不管,但是建议这么写
-
-
-
变量
-
简介
- 如果你用过其它语言你就了解,如果你没有用过。那么变量就是酒店门牌号,具体的操作如下:有一家酒店住人(就是内存放数据),你定了一间房(告诉内存准备空间),觉得444门牌不吉利但不愿意换房,换了门牌号666(告诉系统变量名),你住了(向变量内放了内容),第二天退房(变量死亡)。
-
自定义变量
- 用户自定义变量是用户在脚本中定义的变量,用于存储数据、路径、配置等信息。与系统预定义的变量不同,用户自定义变量通常以用户的需求为基础。
-
定义变量
- 变量名=值(文本引号内,数字没引号){变量名的要求:可以用字母大小写,数字,下划线组成,但是数字不开头也不能是全数字,不要用bash中的关键字,最好见名知意}

-
使用变量
- echo $变量名(echo表示打印,$表示调出变量内容,加起来就是调出变量内容然后打印出来)

-
重复定义变量
- 已有变量名=新值(会覆盖旧值)

-
变量查看set
- set可以查看当前系统所有变量

-
变量删除
- unset 变量名(一般来说变量没用了就不用管了,除非对内存要求严格,比如嵌入式)
-
交互式定义变量
- read 变量名(read函数从控制台读数据,意思是将读到的数据给变量)
- read -p "在-p的条件下,你可以向终端输出一些语句" 变量名

-
注意:三种引号
- 单引号(
'):将其中的文本视为字面量,不进行任何变量替换或命令替换。 - 双引号(
"):允许变量替换和命令替换。在引号内使用$或反引号(`)会被解释。 - 反引号(
`):用于命令替换。反引号内的命令会被执行,其输出结果会替换原位置。现代 Shell 还支持使用$(...)语法来实现命令替换反引号,这种方式更清晰且更易于嵌套。
- 单引号(
-
整数运算(只能用整数,都支持变量$变量)
-
$(())方法
- 用途:用于进行算术运算,是现代 Shell 中最常用的方式。
- 格式:表达式写在
$((...))内部,不需要空格。 - 优点:支持多种运算,包括加法+、减法-、乘法*、除法/和取余%。

-
$[]方法
- 用途:也是进行算术运算的一种方式,但不推荐使用,因为在某些 Shell 中可能会被弃用。
- 格式:表达式写在
$[...]内部,不需要空格。 
- let方法(在声明变量的同时完成计算)
- 注意:不支持浮点数运算。
- 格式:可以省略
$符号,直接使用变量名。比如let 变量c=变量1+变量2 - 用途:用于计算算术表达式,支持多种运算,常用于循环和条件语句中。

- expr方法
- 用途:用于计算表达式,支持整数运算。
- 格式:需要在
expr和运算数之间使用空格,要放在$()内。+-/%,\*(乘有点特殊) - 注意:通常用于较旧的 Shell 脚本,现代脚本中更常用
$(())。 
-
-
小数运算(了解){需要用到bc(计算器)命令,没有就yum -y install bc}
- echo “表达式”|bc:因为bc是命令,所以通过echo将表达式输出到终端,使用管道符传递给bc处理

-
环境变量(了解)
- 可以被子shell继承下去。
- 直接声明:
- export 变量=值(有等号就重新定义,没有就表示将已有变量提升为环境变量或者提升)
- 转换声明:
- 在当前用户的/.bash_profile(预制bash文件,登录运行这个脚本,所以在这个文件内写入export 变量=值)
- 当你想让所有用户使用时/etc/profile(root下,这表示开机运行这个脚本)
- 可以被子shell继承下去。
-
位置变量与预定义变量(了解)
- 位置变量
- 位置变量用于表示脚本的参数。当你运行一个 Shell 脚本并向它传递参数时,位置变量会自动存储这些参数。常见的包括
$0、$1、$2等。$0:表示当前脚本的名称。$1``$2...$n:表示传递给脚本的第 1 个参数、第 2 个参数……依次类推。不要跳(比如$1 $10是错的)$#:表示传递给脚本的参数个数。$*:表示脚本的所有参数(作为单个字符串)。$@:表示脚本的所有参数(每个参数作为独立的字符串)。

- 位置变量用于表示脚本的参数。当你运行一个 Shell 脚本并向它传递参数时,位置变量会自动存储这些参数。常见的包括
- 预定义变量
- Shell 提供了一些预定义的特殊变量,用来帮助处理脚本执行中的各种状态信息。
$$:表示当前 Shell 脚本的进程 ID(PID)。$!:表示最后一个后台运行的进程的进程 ID。$?:表示上一个命令的退出状态,0 表示成功,非 0 表示失败。$-:表示当前 Shell 使用的选项标志。$_:表示上一个命令的最后一个参数,或当前命令的完整路径。
- Shell 提供了一些预定义的特殊变量,用来帮助处理脚本执行中的各种状态信息。
- 位置变量
-
-
-
第二章:判断
-
shell条件测试【真返回0假返回1】
-
数值比较:【 整数1 操作符 整数2 】--注意空格
- 操作符:-gt大于,-lt小于,-eq等于,-ne不等于,-ge大于等于,-le小于等于。

-
文件测试:【 操作符 文件或目录 】--注意空格
-
1. 文件存在性测试:
-f:判断文件是否存在且为普通文件(非目录或特殊文件)。-d:判断目录是否存在。-e:判断文件或目录是否存在(通用测试)。-b:判断文件是否存在且为块设备文件(如硬盘设备)。-c:判断文件是否存在且为字符设备文件(如终端设备)。-p:判断文件是否存在且为命名管道(FIFO)。-S:判断文件是否存在且为 socket 文件。-h或-L:判断文件是否存在且为符号链接(软链接)。
-
2. 权限相关测试:
-r:判断当前用户是否对文件或目录有可读权限。-w:判断当前用户是否对文件或目录有可写权限。-x:判断当前用户是否对文件或目录有可执行权限。-O:判断文件是否存在且被当前用户拥有。-G:判断文件是否存在且属于当前用户的组。
-
3. 文件属性测试:
-s:判断文件是否存在且文件大小大于 0。-g:判断文件或目录是否存在且**设置了 SGID(Set Group ID)**权限位。-k:判断文件或目录是否存在且设置了粘滞位(sticky bit)。
-
-
字符串比较:【 “字符串1” 操作符 “字符串2”】--注意空格
- 操作符,=等于,!=不等于,-z字符串是否为0,=n字符串是否不为0

- 操作符,=等于,!=不等于,-z字符串是否为0,=n字符串是否不为0
-
and(-a,&&)和or(-o,||)(多条件测试)
- and表示多个条件同时满足,当前面条件不满足就不会检测后面的条件
- or表示多个条件有一个满足就绪,当前面的条件满足就不会检测后面的条件
-
-
流程控制:if
-
模式匹配:case
-
相关文章:
云计算(第二阶段):mysql后的shell
第一章:变量 前言 什么是shell Shell 是一种提供用户与操作系统内核交互的工具,它接受用户输入的命令,解释后交给操作系统去执行。它不仅可以作为命令解释器,还可以通过脚本完成一系列自动化任务。 shell的特点 跨平台:…...
Debian12离线部署Mysql全网最详细教程
一、下载安装所需要的库 1、所需要的库 # 所需要的库有 libc6_2.36-9deb12u8_amd64.deb libgcc-s1_12.2.0-14_amd64.deb libstdc6_12.2.0-14_amd64.deb gcc-12-base_12.2.0-14_amd64.deb psmisc_23.6-1_amd64.deb libnuma1_2.0.18-1_amd64.deb libmecab2_0.996-14b14_amd64.d…...
文本生成视频技术:艺术与科学的交汇点
在人工智能技术的飞速发展下,文本生成视频(Text-to-Video)技术已经成为现实。这项技术能够根据文本描述生成相应的视频内容,极大地拓展了内容创作的边界。本文将从三个主要方面对文本生成视频技术进行深入探讨:技术能达…...
【Windows】【DevOps】Windows Server 2022 采用WinSW将一个控制台应用程序作为服务启动(方便)
下载WinSW 项目地址: GitHub - winsw/winsw: A wrapper executable that can run any executable as a Windows service, in a permissive license. 下载地址: https://github.com/winsw/winsw/releases/download/v2.12.0/WinSW-x64.exe 参考配置模…...
OpenAI董事会主席Bret Taylor的Agent公司Sierra:专注于赋能下一代企业用户体验
本文由readlecture.cn转录总结。ReadLecture专注于音、视频转录与总结,2小时视频,5分钟阅读,加速内容学习与传播。 视频来源 youtube: https://www.youtube.com/watch?vriWB5nPNZEM&t47s 大纲 介绍 欢迎与介绍 介绍Bret Taylor&#x…...
【linux】信号(下)
8. 阻塞信号 (一)信号其他相关常见概念 实际执行信号的处理动作称为信号递达(Delivery)信号从产生到递达之间的状态,称为信号未决(Pending)进程可以选择阻塞 (Block )某个信号被阻塞的信号产生时将保持在未决状态,直到进程解除对此信号的阻塞,才执行递达的动作(即被阻塞的信…...
Notepad++ 初学者指南
引言 对于初学者来说,选择合适的编程工具很重要,特别是考虑到易用性和计算机资源的需求。 虽然集成开发环境(IDE)如 Eclipse、IntelliJ IDEA 和 Visual Studio 提供了许多强大的功能,但对于刚开始学习编程的人来说&a…...
Web Socket 使用详解
在信息爆炸的时代,用户对网页的期待早已超越了静态内容的展示。实时聊天、股票报价、协同编辑等功能的实现,都离不开服务器与客户端之间持续、高效的数据交互。传统的HTTP请求-响应模型难以满足这种需求,而WebSocket的出现,为构建…...
【Python Web开发】Python Web开发知识全解析
Python Web开发知识全解析 Python 是一种强大的编程语言,以其简洁和高效而闻名,尤其在 Web 开发领域,它有着广泛的应用。Python 提供了许多功能强大且灵活的 Web 框架,如 Flask、Django、FastAPI 等,使得构建现代 Web…...
Android开发展开收起功能
Android开发展开收起功能 文字过长展开收起功能很普通,也很需要。 一、思路: 自定义控件MoreTextView 二、效果图: 三、关键代码: public class MoreTextView2 extends LinearLayout {/*** TextView的实际高度*/private int …...
Sealos Devbox 发布,珍爱生命,远离 CI/CD
水滴攻击太阳系用的是最原始的攻击方式:撞击!却又如此有效率。 当我们搞了一堆容器、编排、CI/CD、DevOps,发明了一大堆没什么用的名词之后,最终发现这些操作都是花里胡哨,让开发者越陷越深。 最终你会发现一个真理&…...
数据结构——遍历二叉树
目录 什么是遍历二叉树 根据遍历序列确定二叉树 例题(根据先序中序以及后序中序求二叉树) 遍历的算法实现 先序遍历 中序遍历 后序遍历 遍历算法的分析 二叉树的层次遍历 二叉树遍历算法的应用 二叉树的建立 复制二叉树 计算二叉树深度 计算二…...
【Ubuntu】在Ubuntu上安装IDEA
【Ubuntu】在Ubuntu上安装IDEA 零、前言 最近换了Ubuntu系统,但是还得是要写代码,这样就不可避免地用到IDEA,接下来介绍一下如何在Ubuntu上安装IDEA。 壹、下载 这一步应该很容易的,直接打开IDEA的下载页面,点击下…...
解决:gpg: 从公钥服务器接收失败:服务器故障
当你添加密钥时报错,可以按照下面的步骤,依次输入。 # 停止 Network Manager 服务 sudo service network-manager stop# 删除 Network Manager 的状态文件 sudo rm /var/lib/NetworkManager/NetworkManager.state# 重新启动 Network Manager 服务 sudo …...
支持向量机SVM
目录 1 SVM直觉理解2. 软硬间隔3. 升维转换及核技巧入门 参考资料 1 SVM直觉理解 通过一条直线将两类数据分开,并且当有新的数据加入时,通过该条直线就能判别其属于哪一类 为了区分两类数据,N为数据的样本数,M为维度数…...
斯坦福UE4 C++课学习补充25:AI感知组件
文章目录 一、引入感知组件并绑定委托二、优化角色旋转 一、引入感知组件并绑定委托 PawnSensingComponent是UE中用于感知其他 Pawn(或 Actor)存在的一个组件,常用于 AI 角色的视觉、听觉等感知功能。它为 AI 提供了基础的感知能力ÿ…...
大模型 memory 记忆 缓存的应用
在探讨大模型的“memory”(记忆)功能时,我们通常会涉及缓存、存储以及如何有效管理和利用这些记忆来增强模型的性能。以下是对大模型memory记忆、缓存及相关概念的详细分析: 一、大模型的记忆功能 大模型,特别是大型…...
perl 给特定文件加上特定内容
perl 给特定文件加上特定内容 给所有的输入文件,加上特定的内容 本例中,给所有的输入文件内加入## Copyright xxx 如果检测到已经有## Copyright字样的行,那么不添加,具体代码如下。 可以使用该脚本,给所有的verilog文…...
全面解析网络性能监控系统与网络故障排除技巧,助力IT运维高效管理
目录 一、什么是网络性能监控系统? 1.1 网络性能监控系统的定义与作用 二、网络性能监控的关键指标 三、网络故障排除的重要性 3.1 为什么网络故障排除至关重要? 3.2 网络故障的常见类型 四、如何高效进行网络故障排除? 4.1 系统化的…...
Centos7 搭建单机elasticsearch
以下是在 CentOS 7 上安装 Elasticsearch 7.17.7 的完整步骤:(数据默认保存在/var/lib/elasticsearch下,自行更改) 一、装 Java 环境 Elasticsearch 是用 Java 编写的,所以需要先安装 Java 运行环境。 检查系统中是…...
Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?
Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以? 在 Golang 的面试中,map 类型的使用是一个常见的考点,其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...
sqlserver 根据指定字符 解析拼接字符串
DECLARE LotNo NVARCHAR(50)A,B,C DECLARE xml XML ( SELECT <x> REPLACE(LotNo, ,, </x><x>) </x> ) DECLARE ErrorCode NVARCHAR(50) -- 提取 XML 中的值 SELECT value x.value(., VARCHAR(MAX))…...
成都鼎讯硬核科技!雷达目标与干扰模拟器,以卓越性能制胜电磁频谱战
在现代战争中,电磁频谱已成为继陆、海、空、天之后的 “第五维战场”,雷达作为电磁频谱领域的关键装备,其干扰与抗干扰能力的较量,直接影响着战争的胜负走向。由成都鼎讯科技匠心打造的雷达目标与干扰模拟器,凭借数字射…...
UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)
UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中,UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化…...
【Oracle】分区表
个人主页:Guiat 归属专栏:Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...
AGain DB和倍数增益的关系
我在设置一款索尼CMOS芯片时,Again增益0db变化为6DB,画面的变化只有2倍DN的增益,比如10变为20。 这与dB和线性增益的关系以及传感器处理流程有关。以下是具体原因分析: 1. dB与线性增益的换算关系 6dB对应的理论线性增益应为&…...
(一)单例模式
一、前言 单例模式属于六大创建型模式,即在软件设计过程中,主要关注创建对象的结果,并不关心创建对象的过程及细节。创建型设计模式将类对象的实例化过程进行抽象化接口设计,从而隐藏了类对象的实例是如何被创建的,封装了软件系统使用的具体对象类型。 六大创建型模式包括…...
6个月Python学习计划 Day 16 - 面向对象编程(OOP)基础
第三周 Day 3 🎯 今日目标 理解类(class)和对象(object)的关系学会定义类的属性、方法和构造函数(init)掌握对象的创建与使用初识封装、继承和多态的基本概念(预告) &a…...
【Kafka】Kafka从入门到实战:构建高吞吐量分布式消息系统
Kafka从入门到实战:构建高吞吐量分布式消息系统 一、Kafka概述 Apache Kafka是一个分布式流处理平台,最初由LinkedIn开发,后成为Apache顶级项目。它被设计用于高吞吐量、低延迟的消息处理,能够处理来自多个生产者的海量数据,并将这些数据实时传递给消费者。 Kafka核心特…...
MeshGPT 笔记
[2311.15475] MeshGPT: Generating Triangle Meshes with Decoder-Only Transformers https://library.scholarcy.com/try 真正意义上的AI生成三维模型MESHGPT来袭!_哔哩哔哩_bilibili GitHub - lucidrains/meshgpt-pytorch: Implementation of MeshGPT, SOTA Me…...




