18 Shell编程规范与变量

news2024/12/23 5:19:07

目录

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:当前执行的进程/程序名。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1843378.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

音频——性能测试中的基本概念

文章目录 频率响应平均电平增益ADC 路径增益DAC 路径增益底噪信噪比总谐波失真+噪声(THD+N)延迟频率响应 对于音频设备,频率响应可以理解为音频设备对不同频率信号的处理或重现。对于音频信号频率,一般关注20Hz~20kHz范围。理想情况下,输入幅度相同的不同频率信号,过音频…

她经济和女性经济,女性消费力量的崛起

在当今这个数字化飞速发展的时代&#xff0c;"她经济"已经不再是一个简单的概念&#xff0c;而是一场正在上演的女性消费革命。 在最新的《QuestMobile 2024“她经济”洞察》报告中&#xff0c;为我们揭示了女性在移动互联网时代的独特地位和影响力。 首先&#xf…

怎么通俗理解概率论中的c r(cramer rao 克拉默拉奥)不等式?

还是推一下比较好记 视频链接 【数理统计学重要定理证明&#xff1a;C-R不等式——无偏估计的方差下界-哔哩哔哩】 https://b23.tv/4gk1AvU 【数理统计学重要定理证明&#xff1a;C-R不等式——无偏估计的方差下界-哔哩哔哩】

R语言dplyr统计指定列里面种类个数和比例

输入数据框&#xff1a;dfuorf&#xff0c;Type列有uORF和overlpaORF两种类型 dfuorf1 <- dfuorf %>%group_by(Type) %>% summarise(Countn()) %>% mutate(percentCount/sum(Count)) %>% mutate(percent1 (paste0(round((Count/sum(Count)), 2)*100,"%&…

【安防天下】模拟视频监控系统——模拟监控系统的构成视频采集设备

文章目录 1 模拟监控系统的构成2 视频采集设备2.1 摄像机相关技术2.1.1 摄像机的工作原理2.1.2 摄像机的分类2.1.3 摄像机的主要参数 2.2 镜头相关介绍2.2.1 镜头的主要分类2.2.2 镜头的主要参数 1 模拟监控系统的构成 模拟视频监控系统又称闭路电视监控系统&#xff0c; 一般…

②-Ⅱ单细胞学习-组间及样本细胞比例分析(补充)

数据加载 ①单细胞学习-数据读取、降维和分群_subset函数单细胞群-CSDN博客‘ #2024年6月20日 单细胞组间差异分析升级# rm(list = ls()) library(Seurat)#数据加载(在第一步已经处理好的数据) load("scedata1.RData")#这里是经过质控和降维后的单细胞数据 tabl…

解读代理 IP差异:ISP 代理与住宅代理

独立IP作为跨境必备工具&#xff0c;代理类型五花八门&#xff0c;今天IPFoxy全球代理将为搭建科普&#xff1a;ISP代理与住宅代理在理论上与使用上的区别。代理充当用户和互联网之间的中介&#xff0c;提供各种功能以增强安全性、隐私性和可访问性。在众多代理类型中&#xff…

关系数据理论

什么是关系数据理论&#xff1a;用来评判数据库逻辑设计“好坏程度”的标准&#xff1b;二是如果逻辑设计中存在“不好”的关系模式&#xff0c;如何将其修改为“好”的关系模式。 函数依赖&#xff1a;举个例子:学生表中&#xff0c;一个学生的学生号确定了&#xff0c;学生的…

填坑-celery正常启动后能收到任务但不执行任务的解决办法

场景 Flask开发中用celery 6正常启动后能收到任务但不执行任务的解决办法&#xff0c;也没有错误提示…… INFO/MainProcess] Task app.add_together[ce406ed8-71b3-49e6-8556-f44bfe66549c] received [2024-06-20 19:38:10,632: INFO/SpawnPoolWorker-36] child process 2244…

NetSuite Inventory Transfer Export Saved Search

用户之前有提出一个实际的需求&#xff0c;大致意思是想要导出Inventory Transfer的相关明细行信息&#xff0c;且要包含From Location&#xff0c;To Location&#xff0c;Quantity等信息。 我们知道From Location和To Location在IT Form中应该是在Main的部分&#xff0c;在D…

基于DE2-115平台的VGA显示实验

一.任务需求 深入了解VGA协议&#xff0c;理解不同显示模式下的VGA控制时序参数&#xff08;行频、场频、水平/垂直同步时钟周期、显示后沿/前沿等概念和计算方式&#xff09;&#xff1b;通过Verilog编程&#xff0c;在至少2种显示模式下&#xff08;64048060Hz,102476875Hz&…

STM32HAL库--定时器篇

STM32F429 有14个定时器&#xff0c;其中包括 2 个基本定时器&#xff08;TIM6 和 TIM7&#xff09;、 10 个通用定时器&#xff08;TIM2~TIM5&#xff0c;TIM9~TIM14&#xff09;、 2 个高级控制定时器&#xff08;TIM1 和 TIM8&#xff09;。 由上表知道&#xff1a;除了 TIM…

初探工厂抽象模式

设计模式的-工厂模式 1.定义一个约定的规则抽象类 class ETFactory {createStore() {throw new Error(抽象方法&#xff0c;不允许直接调用&#xff0c;需重写)}createUser(){throw new Error(抽象方法&#xff0c;不允许直接调用&#xff0c;需重写)} } 案例&#xff1a;…

【Codesys】-计算开机通电运行时间,累计正常使用时间,故障停机时间

应客户要求&#xff0c;在程序添加了这个用来计算开机运行时间&#xff0c;原理就是取当前时间减去一开始记录的时间&#xff0c;没什么特别要求&#xff0c;记录一下使用的变量类型和数据写法&#xff0c;防止忘记了。 下文只写了一个开机通电运行时间的写法&#xff0c;累计…

Java数据结构与算法——稀疏数组和队列

一、稀疏数组sparsearray数组 该二维数组的很多值是默认值0,因此记录了很多没有意义的数据&#xff0c;可以采用稀疏数组进行压缩 1.基本介绍: 当一个数组中大部分元素为0&#xff0c;或者为同一个值的数组时&#xff0c;可以使用稀疏数组来保存该数组。 稀疏数组的处理方法…

TikTok账号运营:静态住宅IP为什么可以防封?

静态住宅IP代理服务是一种提供稳定、静态IP地址并可隐藏用户真实IP地址的网络代理服务。此类代理服务通常使用高速光纤网络来提供稳定、高速的互联网体验。与动态IP代理相比&#xff0c;静态住宅IP代理的IP地址更稳定&#xff0c;被封的可能性更小&#xff0c;因此更受用户欢迎…

算法基础精选题单 模拟 (个人题解)

前言&#xff1a; 从今天开始刷牛客上的这份题单&#xff0c;为暑假的牛客多校集训做准备&#xff0c;题单上一共有237道题&#xff0c;要想在集训开始前刷完难度还是很大的&#xff0c;但我一定会坚持下来&#xff0c;希望在这段时间内我能真正入门算法竞赛。接下来这三道题都…

k8s学习--OpenKruise详细解释以及原地升级及全链路灰度发布方案

文章目录 OpenKruise简介OpenKruise来源OpenKruise是什么&#xff1f;核心组件有什么&#xff1f;有什么特性和优势&#xff1f;适用于什么场景&#xff1f; 什么是OpenKruise的原地升级原地升级的关键特性使用原地升级的组件原地升级的工作原理 应用环境一、OpenKruise部署1.安…

备忘录模式(大话设计模式)C/C++版本

备忘录模式 C #include <iostream> #include <string> using namespace std;// Memento类&#xff0c;备忘录&#xff0c;此处为角色状态存储箱 class RoleStateMemento { private:int m_vit; // 生命力int m_atk; // 攻击力int m_def; // 防御力 public:RoleStat…

基于SpringBoot+Vue流浪狗领养管理设计和实现(源码+LW+调试文档+讲解等)

&#x1f497;博主介绍&#xff1a;✌全网粉丝1W,CSDN作者、博客专家、全栈领域优质创作者&#xff0c;博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌&#x1f497; &#x1f31f;文末获取源码数据库&#x1f31f; 感兴趣的可以先收藏起来&#xff0c;还…