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

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的作用 命令解释器&#xff0c;“翻译官”&#xff0c;介于系统内核与用户之间&#xff0c;负责解释命令行 用户的登录Shell 登录后默认使用的Shell程序&#xff0c;一般为 /bin/bash 不同Shell的内部指令、运行环境等会有所区别 cat /etc/shells 编写第一个Shell脚本 …...

carla中lka实现(一)

前言&#xff1a; 对于之前项目中工作内容进行总结&#xff0c;使用Carla中的车辆进行lka算法调试&#xff0c;整体技术路线&#xff1a; ①在Carla中生成车辆&#xff0c;并在车辆上搭载camera&#xff0c;通过camera采集图像数据&#xff1b; ②使用图像处理lka算法&#…...

常见的数据结构(顺序表、顺序表、链表、栈、队列、二叉树)

线性表&#xff08;Linear List&#xff09;  1.什么是线性表 2.线性表的特点 3.线性表的基本运算 顺序表 1.什么是顺序表 2.时间复杂度&#xff1a; 链表 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)这行代码时&#xff0c;属实是懵了&#xff0c;网上找了很多博主的介绍&#xff0c;但都没有详细的说明函数内部的计算过程&#xff0c;看得我是一头雾水&#xff0c;只知道计算结果的维度是如何变化的&#xf…...

【iOS】App仿写--天气预报

文章目录 前言一、首页二、搜索界面三、添加界面四、浏览界面总结 前言 最近完成了暑假的最后一个任务——天气预报&#xff0c;特此记录博客总结。根据iPhone中天气App的功能大致可以将仿写的App分为四个界面——首页&#xff0c;搜索界面&#xff0c;添加界面&#xff0c;浏…...

快速远程桌面控制公司电脑远程办公

文章目录 第一步第二步第三步 远程办公的概念很早就被提出来&#xff0c;但似乎并没有多少项目普及落实到实际应用层面&#xff0c;至少在前几年&#xff0c;远程办公距离我们仍然很遥远。但2019年末突如其来的疫情&#xff0c;着实打了大家一个措手不及。尽管国内最初的大面积…...

亚信科技AntDB数据库专家出席数据库标准研讨会并参与研讨

2023年7月12日&#xff0c;全国信息技术标准化技术委员会数据库标准工作组&#xff08;SAC/TC28/WG31&#xff09;秘书处组织召开数据库标准研讨会&#xff0c;会议围绕数据库标准工作组2023年上半年开展的标准编制情况进行交流。亚信科技AntDB数据库相关专家出席会议&#xff…...

【我们一起60天准备考研算法面试(大全)-第三十四天 34/60】【前缀和】【北邮】

专注 效率 记忆 预习 笔记 复习 做题 欢迎观看我的博客&#xff0c;如有问题交流&#xff0c;欢迎评论区留言&#xff0c;一定尽快回复&#xff01;&#xff08;大家可以去看我的专栏&#xff0c;是所有文章的目录&#xff09;   文章字体风格&#xff1a; 红色文字表示&#…...

【数据分析】numpy (二)

numpy作为数据分析&#xff0c;深度学习常用的库&#xff0c;本篇博客我们来介绍numpy的一些进阶用法&#xff1a; 一&#xff0c;numpy的常用简单内置函数&#xff1a; 1.1求和&#xff1a; a np.array([[1, 2],[3, 4]]) np.sum(a)10 1.2求平均值&#xff1a; np.mean(a…...

Vue3小案例—v-model 双向数据绑定实现动态列表增加和删除

v-model双向绑定的原理&#xff1a;   v-model 是Vue.js 提供的一个指令&#xff0c;用于实现双向数据绑定&#xff0c;它可以将表单元素的值与Vue实例的数据绑定在一起&#xff0c;当表单元素的值发生改变时&#xff0c;Vue实例的数据也会随之更新&#xff0c;反之亦然。  …...

MySQL 重置root 密码

5.7 版本 首先要把服务mysql57 关闭 net stop MySQL57 在安装的mysql57的程序的bin中 运行cmd&#xff08;管理员运行&#xff09; mysqld --defaults-file‘mysql存放数据的位置\my.ini’ --skip-grant-tables 上图 错误 注意&#xff1a;如果遇到mysqld: Can’t change dir…...

OpenCV图像处理技巧之空间滤波

1. 引言 再次问好&#xff0c;图像处理爱好者们&#xff01;&#x1f31f; 在前面的章节中&#xff0c;我们学习了图像处理的基础知识&#xff0c;并展现了图像增强的魅力。在这一节中&#xff0c;我们将更深入地研究空间滤波技术。 闲话少说&#xff0c;我们直接开始吧&#…...

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 &#xff08;Post Office Protocol - Version 3&#xff09;协议用于支持使用电子邮件客户端获取并删除在服务器上的电子邮件。 IMAP &#xff08;Internet Message Access Protocol&#xff09;协议用于支持使用电子邮件客户端交互式存取服务…...

云计算——常见集群策略

作者简介&#xff1a;一名云计算网络运维人员、每天分享网络与运维的技术与干货。 座右铭&#xff1a;低头赶路&#xff0c;敬事如仪 个人主页&#xff1a;网络豆的主页​​​​​ 目录 前言 一.什么是集群 二.集群策略 1.虚拟机HA 实现虚拟机高可用性通常涉及以下关键…...

c语言locale.h简介

<locale.h>提供的函数用于控制c标准库中对于不同的地区行为不一样的部分。&#xff08;地区通常是国家或者某种特定语言的地理区域&#xff09; 一、locale.h简单介绍 在标准库里&#xff0c;依赖地区的部分通常包括以下几项&#xff1a; 数字量的格式 货币的格式 字符…...

C++运算符重载详解(赋值、流插入流提取、前置后置++、取地址)

C运算符重载详解 基本介绍运算符重载案列1. 赋值运算符重载2. 前置和后置重载3. cout&#xff0c;cin(流插入&#xff0c;流提取重载)4. 取地址重载 基本介绍 C为了增强代码的可读性引入了运算符重载&#xff0c;运算符重载是具有特殊函数名的函数&#xff0c;也具有其 返回值…...

sql的count函数优化

sql的count(1)函数会执行遍历表统计符合条件的数目&#xff0c;下面有两个sql 第一条&#xff1a; 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…...

GitHub 趋势日报 (2025年06月08日)

&#x1f4ca; 由 TrendForge 系统生成 | &#x1f310; https://trendforge.devlive.org/ &#x1f310; 本日报中的项目描述已自动翻译为中文 &#x1f4c8; 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...

c#开发AI模型对话

AI模型 前面已经介绍了一般AI模型本地部署&#xff0c;直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型&#xff0c;但是目前国内可能使用不多&#xff0c;至少实践例子很少看见。开发训练模型就不介绍了&am…...

什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南

文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/55aefaea8a9f477e86d065227851fe3d.pn…...

Mobile ALOHA全身模仿学习

一、题目 Mobile ALOHA&#xff1a;通过低成本全身远程操作学习双手移动操作 传统模仿学习&#xff08;Imitation Learning&#xff09;缺点&#xff1a;聚焦与桌面操作&#xff0c;缺乏通用任务所需的移动性和灵活性 本论文优点&#xff1a;&#xff08;1&#xff09;在ALOHA…...

AI,如何重构理解、匹配与决策?

AI 时代&#xff0c;我们如何理解消费&#xff1f; 作者&#xff5c;王彬 封面&#xff5c;Unplash 人们通过信息理解世界。 曾几何时&#xff0c;PC 与移动互联网重塑了人们的购物路径&#xff1a;信息变得唾手可得&#xff0c;商品决策变得高度依赖内容。 但 AI 时代的来…...

七、数据库的完整性

七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...

水泥厂自动化升级利器:Devicenet转Modbus rtu协议转换网关

在水泥厂的生产流程中&#xff0c;工业自动化网关起着至关重要的作用&#xff0c;尤其是JH-DVN-RTU疆鸿智能Devicenet转Modbus rtu协议转换网关&#xff0c;为水泥厂实现高效生产与精准控制提供了有力支持。 水泥厂设备众多&#xff0c;其中不少设备采用Devicenet协议。Devicen…...

6个月Python学习计划 Day 16 - 面向对象编程(OOP)基础

第三周 Day 3 &#x1f3af; 今日目标 理解类&#xff08;class&#xff09;和对象&#xff08;object&#xff09;的关系学会定义类的属性、方法和构造函数&#xff08;init&#xff09;掌握对象的创建与使用初识封装、继承和多态的基本概念&#xff08;预告&#xff09; &a…...

第八部分:阶段项目 6:构建 React 前端应用

现在&#xff0c;是时候将你学到的 React 基础知识付诸实践&#xff0c;构建一个简单的前端应用来模拟与后端 API 的交互了。在这个阶段&#xff0c;你可以先使用模拟数据&#xff0c;或者如果你的后端 API&#xff08;阶段项目 5&#xff09;已经搭建好&#xff0c;可以直接连…...

DAY 45 超大力王爱学Python

来自超大力王的友情提示&#xff1a;在用tensordoard的时候一定一定要用绝对位置&#xff0c;例如&#xff1a;tensorboard --logdir"D:\代码\archive (1)\runs\cifar10_mlp_experiment_2" 不然读取不了数据 知识点回顾&#xff1a; tensorboard的发展历史和原理tens…...