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

18 Shell编程规范与变量

目录

18.1 Shell脚本概述

        18.1.1 Shell的作用

        18.1.2 编写第一个Shell脚本

        18.1.3 重定向与管道操作

18.2 Shell变量的作用、类型

        18.2.1 自定义变量

        18.2.2 特殊的Shell变量


18.1 Shell脚本概述

        可以批量处理、自动化地完成一系列维护任务,大大减轻管理员的负担。

        1.shell脚本应用场景

        1.重复性操作

        2.交互性任务

        3.批量事务处理

        4.服务运行状态监控

        5.定时任务执行

        18.1.1 Shell的作用

        Linux系统中的Shell是一个特殊的应用程序,它介于操作系统内核与用户之间,充当了一个“命令解释器”的角色,负责接收用户输入的操作指令(命令)并进行解释,将需要执行的操作传递给内核执行,并输出执行结果。

        18.1.2 编写第一个Shell脚本

        将平时使用的各种Linux命令按顺序保存到一个文本文件中,然后添加可执行权限,这个文件就成为一个Shell脚本。

         执行脚本文件

        1.方法一:脚本文件路径(绝对路径与相对路径,必须有x权限)

        2. 方法二:sh脚本文件路径

        3.方法三:source脚本文件路径

        18.1.3 重定向与管道操作

        由于Shell脚本“批量处理”的特殊性,其大部分操作过程以静默方式运行,不需要用户进行干预。因此提取、过滤执行信息变得十分重要。

        1.重定向操作

        1.标准输入:从该设备接收用户输入的数据

        2.标准输出:通过该设备想用户输出数据

        3.标准错误:通过该设备报告执行出错信息

类型设备文件文件描述编号默认设备
标准输入/dev/stdin0键盘
标准输出/dev/stdout1显示器
标准错误输出/dev/stderr2显示器
类型操作符用途
重定向输入<

从指定的文件读取数据,而不是从键盘输入

重定向输出>将输出结果保存到指定的文件(覆盖原有内容)
>>将输出结果追加指定的文件尾部
标准错误输出2>将错误信息保存到指定的文件(覆盖原有内容)
2>>将错误信息追加到指定的文件中
混合输出&>将标准输出、标准错误的内容保存到同意文件中

 (1)重定向输出

 (2)重定向输入

 (3)错误重定向

        2.管道操作 

        管道操作为不同命令之间的协同工作提供了一种机制,位于管道符号“|”左侧的命令输出的结果,将作为右侧命令的输入(处理对象),同一行命令可以使多个管道。

        又如,若要提取根分区(1)的磁盘使用率信息,可以执行以下操作,其中用到了df、grep、awk 命令和管道操作。 

        重定向与管道操作是 Shel 环境中十分常用的功能,若能够熟练掌握并灵活运用,将有助于编写代码简洁但功能强大的 Shell 脚本程序。 

18.2 Shell变量的作用、类型

        用来存放系统和用户需要使用的特定参数(值),而且这些参数可以根据用户的设定或系统环境的变化而相应变化。

        常见Shell变量的类型包括自定义变量、环境变量、只读变量、位置变量、预定义变量。

        18.2.1 自定义变量

        1.命令格式:变量名=变量值

        2.查看变量:echo $变量名

        3.赋值时使用引号

        (1)双引号:允许通过$符号引用其它变量值。

        (2)单引号:禁止引用其它变量值,$视为普通字符。

        (3)反撇号:命令替换,提取命令执行后的输出结果。

        4.从键盘输入内容为变量赋值

        (1)命令格式:read -p “提示信息”变量名

        5.变量的作用范围

        (1)命令格式

                export 变量名

                export 变量名=变量值——新变量

        18.2.2 特殊的Shell变量
        1.变量的运算

        (1)命令格式:expr 变量1 运算符 变量2

        (2)常用运算符

                a.加法运算:+

                b.减法运算:-

                c.乘法运算:\*

                d.除法运算:/

                e. 求模(取余)运算:%

        2.特殊变量

        (1)环境变量

        a.配置文件:/etc/profile、~/.bash_profile

        b.常见的环境变量:PWD、PATH、USER、SHELL、HOME

        (2)只读变量(用于变量值不允许被修改的情况)

        (3)位置变量

         a.表示为$n,n为1~9之间的数字

        (4)预定义变量

        a.$#:命令行中位置变量的个数。

        b.$*:所有位置变量的内容。

        c.$?:上一条命令执行后返回的状态,当返回状态值为0时表示执行正常,非0值表示异常或出错。

        d.$0:当前执行的进程/程序名。

相关文章:

18 Shell编程规范与变量

目录 18.1 Shell脚本概述 18.1.1 Shell的作用 18.1.2 编写第一个Shell脚本 18.1.3 重定向与管道操作 18.2 Shell变量的作用、类型 18.2.1 自定义变量 18.2.2 特殊的Shell变量 18.1 Shell脚本概述 可以批量处理、自动化地完成一系列维护任务&#xff0c;大大减轻管理员的负担。…...

Linux基础命令大全(详解版)

Linux基础命令&#xff08;详解版&#xff09; 文章目录 Linux基础命令&#xff08;详解版&#xff09;1.Linux的目录结构**2.Linux路径的描述方式**3.Linux命令基础格式4.ls命令 隐藏文件、文件夹5.pwd命令6.cd命令 特殊路径符7.mkdir命令 文件操作命令8.touch命令9.cat命令10…...

python列表常见去重方法

列表去重在python实际运用中&#xff0c;十分常见&#xff0c;也是最基础的重点知识。 1. 使用for循环实现列表去重 此方法去重后&#xff0c;原顺序保持不变。 # for循环实现列表去重 list1 [a, 4, 6, 4, b, hello, hello, world, 9, 9, 4, a] list2 [] for l1 in list1:…...

usb摄像头应用编程

作者简介&#xff1a; 一个平凡而乐于分享的小比特&#xff0c;中南民族大学通信工程专业研究生在读&#xff0c;研究方向无线联邦学习 擅长领域&#xff1a;驱动开发&#xff0c;嵌入式软件开发&#xff0c;BSP开发 作者主页&#xff1a;一个平凡而乐于分享的小比特的个人主页…...

康谋分享 | 自动驾驶联合仿真——功能模型接口FMI(一)

功能模型接口FMI&#xff08;Functional Mock-up Interface&#xff09;是一个开放且与工具解耦的标准。FMI包含了一个C-API&#xff08;接口&#xff09;&#xff0c;一个用于描述接口的XML文件以及可交换的功能模型单元FMU&#xff08;Functional Mock-up Unit&#xff09;&a…...

OPenCV中绘制多条多边形曲线函数polylines的使用

操作系统&#xff1a;ubuntu22.04OpenCV版本&#xff1a;OpenCV4.9IDE:Visual Studio Code编程语言&#xff1a;C11 功能描述 绘制多条多边形曲线 原型1 void cv::polylines ( InputOutputArray img, InputArrayOfArrays pts, bool isClosed, const Scalar & color…...

气膜球幕影院:娱乐体验的新高度—轻空间

气膜球幕影院以其独特的全景沉浸体验和丰富的娱乐内容&#xff0c;成为了现代娱乐产业的重要组成部分。轻空间带您来探索一下气膜球幕影院带来的独特娱乐体验。 全景沉浸式体验 气膜球幕影院的360度全景沉浸式体验&#xff0c;彻底改变了传统观影方式。观众被包围在一个球形屏幕…...

阿里CEO个人投资的智驾公司,走了不一样的路

佑驾创新在去年8月和11月完成两轮融资&#xff0c;在今年5月底递表港交所&#xff0c;目前拿到了29家车企88款车型的量产订单。自动驾驶赛道不缺明星&#xff0c;这些因素本不足以凸显它的差异化。但是在招股书中&#xff0c;一条特殊的发展路线&#xff0c;却让佑驾创新显得不…...

Arduino平台软硬件原理及使用——无源蜂鸣器模块的使用

文章目录 一、蜂鸣器发声原理 二、无源蜂鸣器与有源蜂鸣器的区分 三、无源蜂鸣器模块在Arduino中的使用 一、蜂鸣器发声原理 上图为常见的不同封装及规格的蜂鸣器。 同蜜蜂、知了等昆虫发声原理一样&#xff0c;蜂鸣器同样靠振动来发出声音&#xff1b; 如上图为无源蜂鸣器的内…...

【Go】用 DBeaver、db browser 和 SqlCipher 读取 SqlCipher 数据库

本文档主要描述如何用 DBeaver、db browser 和 SqlCipher 上打开加密的 SQLite3 数据库(用 SqlCipher v3 加密) 软件版本 DBeaver&#xff1a;v24.1.0 SQLite-driver: sqlite-jdbc-3.46.0.0.jar dbbrowser-for-sqlite-cipher&#xff1a;3.12.2 SqlCipher cli(ubuntun)&am…...

ROS操作过程中的报错

文章目录 错误&#xff1a;E: Unable to locate package ros-noetic-desktop-full报错问题报错原因解决方法 错误2&#xff1a;ERROR: cannot download default source list from:报错问题错误原因解决办法 错误&#xff1a;E: Unable to locate package ros-noetic-desktop-fu…...

Qt项目学习-20240617

Qt项目学习 1.0 文件构建 1.1 预处理命令 C预处理命令是编译过程中的第一步&#xff0c;发生在编译器进行实际编译之前。预处理器&#xff08;preprocessor&#xff09;执行这些命令&#xff0c;它们不是C语言的一部分&#xff0c;但对源代码的编译过程至关重要。以下是一些常…...

加密好的WPSword文档,忘记密码怎么办?

在日常办公和学习中&#xff0c;我们经常使用WPS Word等文档处理软件来创建和编辑重要文件。为了保护这些文件不被未经授权的人访问&#xff0c;我们通常会选择给文档设置密码。然而&#xff0c;有时我们可能会因为时间久远或其他原因而忘记自己设置的密码&#xff0c;这时该如…...

C# WPF 读写CAN数据

C# WPF 读写CAN数据 CAN 分析仪 分析仪资料下载 官方地址&#xff1a;https://www.zhcxgd.com/1.html CSDN&#xff1a; 项目配置 复制Dll库文件 文件在上面的资料里面 设置不安全代码 CAN C#工具类 CAN_Tool.cs using Microsoft.VisualBasic; using System; using Sys…...

力扣2517.礼盒的最大甜蜜度

力扣2517.礼盒的最大甜蜜度 二分答案求最小值 排完序判断是否有k个差距至少为mid的元素别用i遍历 可能会越界 用 : 有多少取多少 class Solution {public:int maximumTastiness(vector<int>& price, int k) {ranges::sort(price);auto check [&](int mid) -&…...

多模块存储器

随着计算机技术的发展&#xff0c;处理的信息量越来越多&#xff0c;对存储器的速度和容量要求也越来越高&#xff1b;而且随着CPU性能的不断提高、IO设备数量不断增加&#xff0c;导致主存的存取速度已经称为了整个计算机系统的性能瓶颈。这就要求我们必须提高主存的访问速度。…...

Windows反截屏开发实现

文章目录 Windows反截屏开发实现1. SetWindowDisplayAffinity2. 反截屏系统3. 总结 Windows反截屏开发实现 最近在我们云桌面中需要做到反截屏能力&#xff0c;所谓反截屏就是我们无法通过截图软件&#xff08;微信&#xff0c;QQ&#xff0c;截图等程序&#xff09;截取桌面的…...

Android.mk的用法

前言 Android.mk 文件是 Android 编译系统中用于描述项目源文件、库和模块的 Makefile。它采用 GNU Make 的语法,但也包含了一些特定于 Android 编译系统的规则和变量。以下是对其语法和使用方法的详细解释及示例。 一:模块种类 一个Android.mk file用来向编译系统描述你的源…...

android studio CreateProcess error=2, 系统找不到指定的文件

【问题记录篇】 在AndroidStudio编译开发jni相关工程代码的时候&#xff0c;编译遇到的这个报错&#xff1a; CreateProcess error2, 系统找不到指定的文件。排查处理步骤: 先查看Build Output的具体日志输出 2.了解到问题出在了NDK配置上&#xff0c;此时需要根据自己的gra…...

jQuery如何把单选框设置为选中状态

在网页开发中&#xff0c;我们经常需要使用表单元素来收集用户数据。其中&#xff0c;单选框&#xff08;radio button&#xff09;是一种常见的表单元素&#xff0c;用于从一组选项中选择一个。使用jQuery&#xff0c;我们可以轻松地控制这些单选框的状态&#xff0c;包括将它…...

Mware Fusion Pro 13 mac版:一键掌控虚拟世界

VMware Fusion Pro 13是一款功能卓越的虚拟化软件&#xff0c;专为Mac操作系统量身打造。这款软件为用户提供了一个一站式的虚拟化解决方案&#xff0c;能够满足各种多样化的需求。 VMware Fusion Pro 13 Mac获取 VMware Fusion Pro 13的强大之处在于其采用了最 先进的虚拟化…...

PTA - 函数的定义与调用

编写一个名为collatz()的函数,它有一个名为number的参数&#xff1a; 如果number是偶数,那么collatz()就打印number加上2如果number是奇数,那么collatz()就打印number乘以2 函数接口定义&#xff1a; def collatz(number)裁判测试程序样例&#xff1a; /* 请在这里填写答案…...

Solr7.4.0报错org.apache.solr.common.SolrException

文章目录 org.apache.solr.common.SolrException: Exception writing document id MATERIAL-99598435990497269125316 to the index; possible analysis error: cannot change DocValues type from NUMERIC to SORTED_NUMERIC for field "opt_time"Exception writing…...

从2-3-4树开始理解红黑二叉树(JAVA代码手撸版)

经典的红黑二叉树在新增/删除数据时维持自平衡始终对应着一个2-3-4 树。本文只关注2-3-4 对应的经典红黑二叉树。 暂时不考虑 2-3 树对应的左倾红黑二叉树。 背景知识 2-3-4 树简介 一棵 2-3-4 树的结点分为 内部结点 (internal nodes) 和 叶子结点 (leaf nodes) &#xff0c;…...

模板类与继承

1模板类继承普通类&#xff08;常见&#xff09; #include<iostream> using namespace std; class AA { public:int m_a;AA(int a) :m_a(a) { cout << "调用了AA的构造函数\n"; }void func1() { cout << "调用func1&#xff08;&#xff09;…...

随手记:uniapp图片展示,剩余的堆叠

UI效果图&#xff1a; 实现思路&#xff1a; 循环图片数组&#xff0c;只展示几张宽度就为几张图片边距的宽度&#xff0c;剩下的图片直接堆叠展示 点击预览的时候传入当前的下标&#xff0c;如果是点击堆叠的话&#xff0c;下标从堆叠数量开始计算 <template><…...

微服务迁移、重构最佳经验

1. 了解现有的单体应用: - 应用架构和技术栈 要了解现有的应用架构和技术栈&#xff0c;可以采取以下几个步骤&#xff1a; 1. 了解应用的背景和目标&#xff1a;首先要了解应用的背景和目标&#xff0c;包括应用所属的行业、应用的类型&#xff08;例如Web应用、移动应用等…...

【Python】从0开始的Django基础

Django框架基础 unit01一、Django基础1.1 什么是Django?1.2 安装与卸载1.2.1 Python与Django的版本1.2.2 安装1.2.3 查看Django版本1.2.4 卸载 二、Django项目2.1 概述2.2 创建项目2.3 启动项目2.4 项目的目录结构2.5 配置 三、URL 调度器3.2 定义URL路由3.2 定义首页的路由3.…...

红黑树(数据结构篇)

数据结构之红黑树 红黑树(RB-tree) 概念&#xff1a; 红黑树是AVL树的变种&#xff0c;它是每一个节点或者着成红色&#xff0c;或者着成黑色的一棵二叉查找树。对红黑树的操作在最坏情形下花费O(logN)时间&#xff0c;它的插入操作使用的是非递归形式实现红黑树的高度最多是…...

高级视频编码器性能对比(H265、VP9、AV1)

1、背景介绍 目前在视频编解码器中&#xff0c;H264已经成为绝对的主流&#xff0c;被大部分设备、浏览器所支持。虽然有更先进的编码器推出&#xff0c;但是受限于推广速度和设备支持成本&#xff0c;一直未能成为主流。 今年公司目标是持续降本增效&#xff0c;现在将”屠刀…...

北京东道设计公司官网/成都seo网站qq

模拟Vue响应式原理 将 data 中的成员转换成 get 与 set 注入到 Vue 实例上&#xff0c;则在 vue 的实例中则可以访问到 data 中的成员 Vue实例中的成员&#xff1a; data&#xff1a;记录data中的成员转换成get与set&#xff0c;data&#xff1a;记录 data 中的成员转换成 ge…...

怎样手机网站建设/搜索热词排行榜

最近学习es&#xff0c;先是在图书馆借了几本书&#xff0c;但是发现与es现在的版本相差太远了&#xff0c;所以就选择直接在网上看The Definitive Guide&#xff0c;感觉这本书讲得倒还挺好&#xff0c;不过在看到这个地方的时候&#xff0c;按照书上的代码总是出现错误&#…...

wordpress国内能用吗/百度竞价托管哪家好

对于一个应用程序来说日志记录是必不可少的一部分。线上问题追踪&#xff0c;基于日志的业务逻辑统计分析等都离不日志。java领域存在多种日志框架&#xff0c;目前常用的日志框架包括Log4j 1&#xff0c;Log4j 2&#xff0c;Commons Logging&#xff0c;Slf4j&#xff0c;Logb…...

wordpress 一个主题公园/简述在线推广网站的方法

#yum -y install net-snmp*#vi /etc/snmp/snmpd.conf1. 查找以下字段&#xff1a;代码:# sec.name source communitycom2sec notConfigUser default public将"comunity"字段改为你要设置的密码.比如"public".将“default”改为你想哪台机器可以看到你的snm…...

食品检测公司/关键词整站优化

这里首先记录一下QVariant的一点使用注意事项&#xff0c;后续内容再加 QMap<QString,QVariant> map; int a1; QImage m_showImg; map.insert("Img",m_showImg); map.insert("ImgType",a); void func(QString v)//v是传入的参数&#xff0c;可以是上…...

佳木斯城乡建设局网站/祁阳seo

简介 Webpack是一个前端构建工具&#xff0c;本文将简要介绍它最常用的功能&#xff0c;并创建一个基于webpack的前端开发环境。 范例项目 包含两个页面&#xff0c;列表页list.html和详情页detail.html&#xff0c;仅作为Webpack打包的演示&#xff0c;不实际开发功能。范例项…...