Linux:shell脚本:基础使用(1)
Shell的作用
命令解释器,“翻译官”,介于系统内核与用户之间,负责解释命令行
用户的登录Shell
登录后默认使用的Shell程序,一般为 /bin/bash
不同Shell的内部指令、运行环境等会有所区别
cat /etc/shells

编写第一个Shell脚本
格式以*.sh
*是你起的名字,什么名字无所谓,但是结尾必须是sh为结尾的
vim ceshi.sh
里面可以写一些命令,他执行bash命令是依次从上到下执行的
由于是刚刚接触,可以先编写一些简单的语句,这里所谓的语句,就是平时使用的命令

你可以随便写一些,目前这个还是很好理解的
执行脚本的办法
一:./脚本文件路径
二:sh 脚本文件路径
三:source 脚本文件路径
使用第一种要为其设置执行权限 ./脚本文件路径

chmod +x ceshi.sh

第二种和第三种可以不给执行权限 但是他们的结果都是一样的


三种执行方式,都是一样的效果

写入的都是依次执行的
更完善的脚本构成
为了更完善脚本,向上面那样,也是可以执行的,但是可能会给后来的人添加难度

最好是第一排声明脚本运行的环境
注释信息 以‘#’开头的行为注释行 ,注释行不会执行
重定向
【类型】【操作符】【用途】
重定向输入 ; < ; 从指定的文件读取数据,而不是从键盘输入
重定向输出; > ;将输出结果保存到指定的文件(覆盖原文件)
重定向输出;>>; 将输出结果追加到指定的文件
标准错误输出;2> ;将错误信息保存到指定的文件(覆盖原文件)
标准错误输出;2>>; 将错误信息追加到指定的文件中
混合输出;&> ; 将标准输出、标准错误的内容保存到同一个文件中
例如下面的
uname -p > kernel.txt
# 将uname 输出的东西写入到 kernel.txt中,并覆盖原有内容
uname -r >> kernel.txt
#将输出内容追加到 kernel.txt ,不会覆盖原文件内容,只是在结尾处新加追加内容
echo "123456" > pass.txt
cat pass.txt
useradd tom
passwd --stdin tom < pass.txt
# 将pass.txt文件内容当成密码,输入到tom的密码里,也就是把tom密码设置为123456
管道操作
将左侧的命令输出结果,作为右侧命令的处理对象
也就是说,第一次的结果上再次进行第二次处理
例如:
df -hT

查看磁盘使用情况
df -hT | grep '/$'

查看磁盘使用情况 ,并检索前面输出内容中以/结尾的
df -hT | grep '/$' | awk '{print $1}

查看磁盘使用情况 ,并检索前面输出内容中以/结尾的,并查看里面的第一个信息 默认是以空格切割开的,$1 就是第一块 $4就是第四块 $1,$3就是看第1块和第三块1的

自定义变量
变量名=变量值
变量名以字母或下划线开头,区分大小写,建议全大写
如果要查看的话可以使用
echo $变量名
变量名=变量值

定义了一个变量 为a赋值了,如果要查看
echo $变量名

现在我们再赋值一个b值为world

输出多个变量可以使用
echo $变量名 $变量名 (中间有没有空格都可以)
变量后面添加别的可以使用
echo ${变量名}其他的字符

赋值时使用引号的含义
双引号 "

可以有空格或者其他其他符号 但是写了变量格式,就会输出变量
单引号 '

使用变量并不会生效,同时也支持符号
反撇符号的使用 `
例如:
ls -lh `which useradd`

其中的含义和 ls -lh /usr/sbin/useradd 是一样的
他会优先处理 ·· 里的内容然后将 ·· 的输出内容添加到前面的命令中
rpm -qc `rpm -qf `which useradd``
例如这个意思上是对的但是输出结果不对,我们还有另外一种写法
rpm -qc $(rpm -qf $(which useradd))
也是依次执行
先执行最里面的

read输入变量
read 变量名
输入变量内容

输入完变量值后回车

如果需要带有输入提示的read可以使用
read -p '提示语句' 变量名

现在ppp的变量值为hello world
设置变量的作用范围
变量范围分为局部变量和全局变量
向上面我们设置的变量全为局部变量

如上图,我们在bash里设置了变量,当我们在当前bash里查看就可以查看到,当我们切换进入子bash里查看就查看不到了-------这个就是局部变量
设置全局变量
export 变量名=变量值

将局部变量转换为全局变量

现在q和w均为局部变量
使用
export 变量名 后面可以跟多个变量名
export 变量名 变量名 ……

整数变量的运算(expr)
expr 变量1 运算符 变量2 [运算符 变量3] ...
常用运算符
*加法运算:+*减法运算: -
*乘法运算: \*
*除法运算: /
*求模(取余)运算: %
$() --- 命令嵌套``
${} ----- 解决变量名混淆问题
$(()) --- 实现整数的混合运算

特殊的Shell变量
由系统提前创建,用来设置用户的工作环境
配置文件: /etc/profile、~/.bash_profile
常见的环境变量:
*PWD、PATH
*USER 、SHELL、HOME

这些我们没有手动创建,是系统自动创建的
例如我们制作用户登录的欢迎脚本
vim /opt/tarro.sh写入
#!/bin/bash
echo "欢迎名称为: $USER 的用户登录"
chmod +x /opt/tarro.sh
vim /etc/profile在最后一行输入
source /opt/tarro.sh

位置变量
意思就是当我们在脚本里写了变量,但是没有明确给变量的变量值
我们可以在执行脚本的时候在后面把值写上 空格隔开,每个值对应着相应位置的变量
随便创建一个脚本里面写入


这时hello就对应着$1 world对应着$2

没有明确写变量值的变量可以在执行脚本前后面加上对应的值
相关文章:
Linux:shell脚本:基础使用(1)
Shell的作用 命令解释器,“翻译官”,介于系统内核与用户之间,负责解释命令行 用户的登录Shell 登录后默认使用的Shell程序,一般为 /bin/bash 不同Shell的内部指令、运行环境等会有所区别 cat /etc/shells 编写第一个Shell脚本 …...
carla中lka实现(一)
前言: 对于之前项目中工作内容进行总结,使用Carla中的车辆进行lka算法调试,整体技术路线: ①在Carla中生成车辆,并在车辆上搭载camera,通过camera采集图像数据; ②使用图像处理lka算法&#…...
常见的数据结构(顺序表、顺序表、链表、栈、队列、二叉树)
线性表(Linear List) 1.什么是线性表 2.线性表的特点 3.线性表的基本运算 顺序表 1.什么是顺序表 2.时间复杂度: 链表 1.什么是链表 2.单向链表 3. 双向链表 4.ArrayList和LinkedList的使用 栈Stack 1.什么是栈 2.栈的基本方法 队列…...
(12)理解委托,反射,Type,EvenInfo,插件, 组合枚举,BindingFlags,扩展方法及重载,XML认识
一、复习委托事件 1、委托复习。 private delegate int MyDelegate(int a, int b); //1.定义委托类型private static void Main(string[] args){MyDelegate md new MyDelegate(AddDelegate);//2.声明委托变量int result md(1, 2);//3.调用委托Console.WriteLine(result);Cons…...
软件建设方案技术方案实施方案密码评测方案等保测评方案人员培训方案项目建设与运行管理项目招标方案模板目录
第一章 项目概述 1.项目名称(包含项目全称和简称) 2.项目建设单位及负责人、项目责任人 3.项目建设依据 (1)政策依据(主要从国家、省、市、行业部门相关的政策文件要求等方面进行描述) (2)技术标准 4.项目建设目标、建设任务 5.项目主要建设内容、规模、建设周期…...
pytorch中torch.einsum函数的详细计算过程图解
第一次见到 rel_h torch.einsum(“bhwc,hkc->bhwk”, r_q, Rh)这行代码时,属实是懵了,网上找了很多博主的介绍,但都没有详细的说明函数内部的计算过程,看得我是一头雾水,只知道计算结果的维度是如何变化的…...
【iOS】App仿写--天气预报
文章目录 前言一、首页二、搜索界面三、添加界面四、浏览界面总结 前言 最近完成了暑假的最后一个任务——天气预报,特此记录博客总结。根据iPhone中天气App的功能大致可以将仿写的App分为四个界面——首页,搜索界面,添加界面,浏…...
快速远程桌面控制公司电脑远程办公
文章目录 第一步第二步第三步 远程办公的概念很早就被提出来,但似乎并没有多少项目普及落实到实际应用层面,至少在前几年,远程办公距离我们仍然很遥远。但2019年末突如其来的疫情,着实打了大家一个措手不及。尽管国内最初的大面积…...
亚信科技AntDB数据库专家出席数据库标准研讨会并参与研讨
2023年7月12日,全国信息技术标准化技术委员会数据库标准工作组(SAC/TC28/WG31)秘书处组织召开数据库标准研讨会,会议围绕数据库标准工作组2023年上半年开展的标准编制情况进行交流。亚信科技AntDB数据库相关专家出席会议ÿ…...
【我们一起60天准备考研算法面试(大全)-第三十四天 34/60】【前缀和】【北邮】
专注 效率 记忆 预习 笔记 复习 做题 欢迎观看我的博客,如有问题交流,欢迎评论区留言,一定尽快回复!(大家可以去看我的专栏,是所有文章的目录) 文章字体风格: 红色文字表示&#…...
【数据分析】numpy (二)
numpy作为数据分析,深度学习常用的库,本篇博客我们来介绍numpy的一些进阶用法: 一,numpy的常用简单内置函数: 1.1求和: a np.array([[1, 2],[3, 4]]) np.sum(a)10 1.2求平均值: np.mean(a…...
Vue3小案例—v-model 双向数据绑定实现动态列表增加和删除
v-model双向绑定的原理: v-model 是Vue.js 提供的一个指令,用于实现双向数据绑定,它可以将表单元素的值与Vue实例的数据绑定在一起,当表单元素的值发生改变时,Vue实例的数据也会随之更新,反之亦然。 …...
MySQL 重置root 密码
5.7 版本 首先要把服务mysql57 关闭 net stop MySQL57 在安装的mysql57的程序的bin中 运行cmd(管理员运行) mysqld --defaults-file‘mysql存放数据的位置\my.ini’ --skip-grant-tables 上图 错误 注意:如果遇到mysqld: Can’t change dir…...
OpenCV图像处理技巧之空间滤波
1. 引言 再次问好,图像处理爱好者们!🌟 在前面的章节中,我们学习了图像处理的基础知识,并展现了图像增强的魅力。在这一节中,我们将更深入地研究空间滤波技术。 闲话少说,我们直接开始吧&#…...
Java超级玛丽小游戏制作过程讲解 第一天 创建窗口
package com.sxt;import javax.swing.*; import java.awt.event.KeyEvent; import java.awt.event.KeyListener;public class MyFrame extends JFrame implements KeyListener {//设置窗口的大小为800*600public MyFrame() {this.setSize(800, 600);//设置窗口中显示this.setLo…...
【POP3/IMAP/SMTP】QQ邮箱设置
什么是 POP3/IMAP/SMTP 服务 POP3 (Post Office Protocol - Version 3)协议用于支持使用电子邮件客户端获取并删除在服务器上的电子邮件。 IMAP (Internet Message Access Protocol)协议用于支持使用电子邮件客户端交互式存取服务…...
云计算——常见集群策略
作者简介:一名云计算网络运维人员、每天分享网络与运维的技术与干货。 座右铭:低头赶路,敬事如仪 个人主页:网络豆的主页 目录 前言 一.什么是集群 二.集群策略 1.虚拟机HA 实现虚拟机高可用性通常涉及以下关键…...
c语言locale.h简介
<locale.h>提供的函数用于控制c标准库中对于不同的地区行为不一样的部分。(地区通常是国家或者某种特定语言的地理区域) 一、locale.h简单介绍 在标准库里,依赖地区的部分通常包括以下几项: 数字量的格式 货币的格式 字符…...
C++运算符重载详解(赋值、流插入流提取、前置后置++、取地址)
C运算符重载详解 基本介绍运算符重载案列1. 赋值运算符重载2. 前置和后置重载3. cout,cin(流插入,流提取重载)4. 取地址重载 基本介绍 C为了增强代码的可读性引入了运算符重载,运算符重载是具有特殊函数名的函数,也具有其 返回值…...
sql的count函数优化
sql的count(1)函数会执行遍历表统计符合条件的数目,下面有两个sql 第一条: select count(1) from membership_call_detail_statistics a where a.repository_id f2a4ed6b3e074e33bd99998c1def26f8 and a.statistics_date between 2023-04-01 00:00:0…...
label-studio的使用教程(导入本地路径)
文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...
质量体系的重要
质量体系是为确保产品、服务或过程质量满足规定要求,由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面: 🏛️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限,形成层级清晰的管理网络…...
屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!
5月28日,中天合创屋面分布式光伏发电项目顺利并网发电,该项目位于内蒙古自治区鄂尔多斯市乌审旗,项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站,总装机容量为9.96MWp。 项目投运后,每年可节约标煤3670…...
学习STC51单片机31(芯片为STC89C52RCRC)OLED显示屏1
每日一言 生活的美好,总是藏在那些你咬牙坚持的日子里。 硬件:OLED 以后要用到OLED的时候找到这个文件 OLED的设备地址 SSD1306"SSD" 是品牌缩写,"1306" 是产品编号。 驱动 OLED 屏幕的 IIC 总线数据传输格式 示意图 …...
土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等
🔍 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术,可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势,还能有效评价重大生态工程…...
聊一聊接口测试的意义有哪些?
目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开,首…...
CVPR2025重磅突破:AnomalyAny框架实现单样本生成逼真异常数据,破解视觉检测瓶颈!
本文介绍了一种名为AnomalyAny的创新框架,该方法利用Stable Diffusion的强大生成能力,仅需单个正常样本和文本描述,即可生成逼真且多样化的异常样本,有效解决了视觉异常检测中异常样本稀缺的难题,为工业质检、医疗影像…...
【UE5 C++】通过文件对话框获取选择文件的路径
目录 效果 步骤 源码 效果 步骤 1. 在“xxx.Build.cs”中添加需要使用的模块 ,这里主要使用“DesktopPlatform”模块 2. 添加后闭UE编辑器,右键点击 .uproject 文件,选择 "Generate Visual Studio project files",重…...
Python常用模块:time、os、shutil与flask初探
一、Flask初探 & PyCharm终端配置 目的: 快速搭建小型Web服务器以提供数据。 工具: 第三方Web框架 Flask (需 pip install flask 安装)。 安装 Flask: 建议: 使用 PyCharm 内置的 Terminal (模拟命令行) 进行安装,避免频繁切换。 PyCharm Terminal 配置建议: 打开 Py…...
用递归算法解锁「子集」问题 —— LeetCode 78题解析
文章目录 一、题目介绍二、递归思路详解:从决策树开始理解三、解法一:二叉决策树 DFS四、解法二:组合式回溯写法(推荐)五、解法对比 递归算法是编程中一种非常强大且常见的思想,它能够优雅地解决很多复杂的…...
