shell脚本入门-多命令处理与变量

news2025/1/25 9:14:22

目录

  • 1.多命令处理
  • 2.Shell变量
    • Shell变量的介绍
      • 2.1 系统环境变量
      • 2.2自定义变量
        • 自定义局部变量
          • 查询变量值语法
          • 变量删除
        • 自定义全局变量
          • 父子Shell环境介绍
      • 2.3 自定义常量

1.多命令处理

多命令处理的介绍:

就是在Shell脚本文件中编写多个Shell命令

我们现在通过一些需求来更好的理解这块的知识

已知目录/root/itheima目录,执行batch.sh脚本,实现在/root/itheima/目录下创建一个one.txt,在one.txt文件中增加内容“Hello Shell”。

步骤分析

  1. 使用mkdir创建/root/itheima目录

  2. 创建脚本文件batch.sh

  3. 编辑脚本文件

    3.1 命令1: touch创建文件, 文件名 /root/itheima/one.txt

    3.2 命令2: 输出数据"Hello Shell"到one.txt文件中

    输出数据到文件中的命令:

    数据 >> 文件

  4. 执行脚本文件

下面我们来一步一步的分解:
1、进入root目录,执行创建/root/itheima目录命令

mkdir /root/itheima

2、创建/root/batch.sh文件

touch batch.sh

在这里插入图片描述
3、编辑batch.sh文件,编写shell命令
命令1:创建/root/itheima/one.txt文件
命令2:输出“I love Shell”字符串数据到one.txt文件中

#!/bin/bash
cd itheima     # 切换到itheima目录
touch one.txt  # 创建文件one.txt
echo "Hello Shell">>/root/itheima/one.txt  #输出数据到one.txt文件中

在这里插入图片描述
运行脚本效果
运行batch.sh脚本文件

sh batch.sh

查看one.txt文件内容

cat itheima/one.txt

在这里插入图片描述

2.Shell变量

Shell变量的介绍

变量用于存储管理临时的数据, 这些数据都是在运行内存中的.

变量类型

  1. 系统环境变量
  2. 自定义变量
  3. 特殊符号变量

2.1 系统环境变量

目标

1、理解什么是系统环境变量?

2、掌握常用的系统环境变量都有哪些?

介绍

是系统提供的共享变量.是linux系统加载Shell的配置文件中定义的变量共享给所有的Shell程序使用

环境变量分类

在Linux系统中,环境变量按照其作用范围不同大致可以分为系统级环境变量和用户级环境变量。

系统级环境变量:Shell环境加载全局配置文件中的变量共享给所有用户所有Shell程序使用, 全局共享
用户级环境变量:Shell环境加载个人配置文件中的变量共享给当前用户的Shell程序使用, 登录用户使用

查看当前Shell系统环境变量
查看命令

env

效果在这里插入图片描述

查看Shell变量(系统环境变量+自定义变量+函数)
命令

set

效果:
在这里插入图片描述

2.2自定义变量

目标:

理解自定义变量的分类

能够自定义变量进行增\删\改\查

自定义变量介绍:

这个说白了就是自己定义的变量

分类

  1. 自定义局部变量
  2. 自定义常量
  3. 自定义全局变量

自定义局部变量

介绍

就是定义在一个脚本文件中的变量, 只能在这个脚本文件中使用的变量, 就是局部变量

定义与使用
定义语法:

var_name=value

变量定义规则:

  1. 变量名称可以有字母,数字和下划线组成, 但是不能以数字开头
  2. 等号两侧不能有空格
  3. 在bash环境中, 变量的默认类型都是字符串类型, 无法直接进行数值运算
  4. 变量的值如果有空格, 必须使用双引号括起来
  5. 不能使用Shell的关键字作为变量名称

演示一下:
在这里插入图片描述

查询变量值语法
# 语法1: 直接使用变量名查询
$var_name
# 语法2: 使用花括号
${var_name}
# 区别: 花括号方式适合拼接字符串

花括号解释如下(如果没有花括号的话会认为是获取testgirl这个变量的值):
在这里插入图片描述

变量删除

语法

unset var_name

效果:
在这里插入图片描述

自定义全局变量

父子Shell环境介绍

例如: 有2个Shell脚本文件 A.sh 和 B.sh

如果 在A.sh脚本文件中执行了B.sh脚本文件, 那么A.sh就是父Shell环境, B.sh就是子Shell环境

自定义全局变量介绍

就是在当前脚本文件中定义全局变量, 这个全局变量可以在当前Shell环境与子Shell环境中都可以使用

自定义全局变量语法

export var_name1 var_name2

我们现在来具体实现一个需求:

测试全局变量在子Shell中是否可用, 在父Shell中是否可用

案例实现步骤

  1. 创建2个脚本文件 demo2.sh 和 demo3.sh

  2. 编辑demo2.sh

    命令1:定义全局变量VAR4

    命令2: 执行demo3.sh脚本文件

  3. 编辑demo3.sh

    输出全局变量VAR4

  4. 执行demo2.sh脚本文件

案例演示

  1. 创建demo2.sh和demo3.sh文件在这里插入图片描述
  2. 编辑demo2.sh, 里面定义变量VAR4并设置为全局, 并里面执行demo3.sh脚本文件
    vim demo2.sh
    在这里插入图片描述
    3.编辑demo3.sh, 里面打印VAR4
    在这里插入图片描述
    4.执行脚本文件demo2.sh, 观察打印VAR4效果
    在这里插入图片描述

结论

全局变量在当前Shell环境与子Shell环境中可用, 父Shell环境中不可用

2.3 自定义常量

介绍

就是变量设置值以后不可以修改的变量叫常量, 也叫只读变量

语法

readonly var_name

效果(只能读不能修改):
在这里插入图片描述

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

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

相关文章

自然语言处理实战10-文本处理过程与输入bert模型后的变化

大家好,我是微学AI,今天给大家介绍一下自然语言处理实战10-文本处理过程与输入bert模型后的变化,通过一段文本看看他的整个变化过程,经过怎样得变化才能输入到模型,输入到模型后文本又经过怎样的计算得到最后的结果。看…

逆向工程的未来在哪里?掌握逆向技能,开创新的职业道路!

前言 随着移动互联网的兴起,“APP”成了99%的互联网企业主要运营的产品,知名的例如“支付宝”、“美团”、“滴滴”、“抖音”等。用户基数的不断变大,安全性也经历着巨大的挑战。 app越来越多,也离不开我们的生活,而…

团队管理之性能实施团队日志10

在这一周中基本上遇到了性能实施过程中应该遇得到的复杂的问题。 像堆外内存引发OOM Killer,C coredump,负载该均衡不均衡,主机资源不够用,数据引发TPS抖动,IO引发TPS抖动之类的。 在这个项目中几乎碰到了我之前遇到…

2023Fiddler抓包学习笔记 -- 环境配置及工具栏介绍

一、Fiddler介绍 Fiddler是位于客户端和服务器端的HTTP代理,常用来抓http数据包,可以监控浏览器所有的http和https流量,查看分析请求数据包和响应数据包,伪造请求和响应等功能。 二、下载安装 1、下载地址 https://www.teleri…

企业——缺省路由

缺省路由是目的地址和掩码全为0的特殊路由 如果报文的目的地址无法匹配路由表中的任何一项,路由器将选择依照缺省路由来转发报文。 ip route-static 0.0.0.0 0.0.0.0 实验要求: 1、按照图中的要求配置IP 2、要求使用静态协议缺省实现访问2.0、3.0、…

linux时间同步,ntpd、ntpdate

linux时间同步,ntpd、ntpdate 一.Linux系统时间的设置二.Linux硬件时间的设置三.系统时间和硬件时间的同步四.不同机器之间的时间同步(重点)五.ntpd服务的设置六.ntp服务的启动与观察七.具体实践:7.1 NTP的配置7.1.1 配置/etc/ntp.conf7.1.2配置/etc/ntp…

VHDL语法

VHDL完整的、可综合的程序结构,必须包含实体和结构体两个最基本的语言结构。 具体取名由设计者自定,由于实体名实际上表达的是该设计电路的器件名,所以最好根据相应电路的功能来确定, 标识符命名规则: (1)标识符主要由字母、数字…

2023年中职组“网络安全”赛项南昌市竞赛任务书

2023年中职组“网络安全”赛项 南昌市竞赛任务书 网络空间安全赛项规程 一、赛项名称 赛项名称:网络空间安全 赛项组别:中职组 二、竞赛目的 通过竞赛,检验参赛选手对网络、服务器系统等网络空间中各个信息系统的安全防护能力&#xff0…

重用Playbook

文章目录 重用Playbookinclude语句如何写role默认变量和普通变量的区别tasks/main.yaml 如何使用变量、静态文件和模板使用x/*/main.yaml中的变量使用x/*/other_but_main.yaml中的资源 role的依赖 重用Playbook Ansible支持的两种重用机制是Roles和Includes。 Roles是一种可重…

【RuoYi-Cloud-Plus】学习笔记 06 - Sentinel(一)关于 StatisticSlot 以及 LeapArray

文章目录 前言参考目录学习笔记1、Sentinel 简介2、Sentinel 架构图3、Sentinel 源码学习3.1、包结构3.2、 LeapArray (滑动窗口算法的实现)3.3、StatisticSlot3.3.1、StatisticSlot#entry3.3.2、StatisticSlot#exit3.4、StatisticNode、StatisticSlot、…

Linux——基础网络设置

个人简介:云计算网络运维专业人员,了解运维知识,掌握TCP/IP协议,每天分享网络运维知识与技能。座右铭:海不辞水,故能成其大;山不辞石,故能成其高。 个人主页:小李会科技的…

几个事件的问题

1.PC端的click是点击事件,移动端的lick会存在300ms延迟 移动端的click是单击事件,单击事件:第一次点击后,监测300ms, 看是否有第二次点击操作,如果有就是单击,如果有就是双击。 如何解决: 单手指事件模型…

Linux 操作系统原理 — tc 流量控制技术解析

目录 文章目录 目录Traffic ControlTraffic Control 的基本实现原理流量处理的三个层面流量处理的关键流程流量队列的类型FIFO 队列PFIFO_FAST 队列SFQ 队列令牌桶队列 Kernel Traffic Control 的工作原理Qdisc(队列描述)Class(分类&#xff…

电子元器件解析之电容(二)——电容分类与应用场景

书接上文:电子元器件解析之电容(一)——定义与性能参数:https://blog.csdn.net/weixin_42837669/article/details/131142286 摘要 本文总结了各种不同介质电容的特性,包括陶瓷电容、电解电容、薄膜电容等;同时对一些特殊场合的电容…

Transformer Block运算量

参考:Swin Transformer论文精读【论文精读】_哔哩哔哩_bilibili 在看朱毅老师讲解Swin Transformer论文时,里面有一个Transformer Block的计算复杂度的推导计算,感觉清晰明了,这里做一下记录,先说一下结果,…

Android:Handler

参考来源 参考来源 参考来源 参考来源 Handler机制(面试版) Binder/Socket用于进程间通信,而Handler消息机制用于同进程的线程间通信 handler机制是android系统运行的基础,它采用生产者,消费者模式进行设计。其中生产…

基于SSM的青少年编程学习系统设计与实现

摘 要:在智能技术飞速发展的今天,各国都努力争取在人工智能时代的发展中占据优势,青 少年编程教育就显得格外重要。不过,相比一些青少年编程教育发展更先进的国家,我国青少 年编程教育仍处在初级阶段,很多青…

服务器(裸机)如何安装Centos 7系统

1. 下载系统镜像(可以选择自己对应的版本) http://mirrors.aliyun.com/centos/7/isos/x86_64/2. 制作linux系统U盘 下载UltraISO制作工具并安装 再准备一个空U盘(注意:这个操作会将U盘内数据全部删除操作之前请将U盘内文件备份&…

Swift学习笔记(一)基础语法

文章目录 前言开发工具变量与常量变量和常量的定义和使用变量和常量的命名规范注释初识基本数据类型浮点型数据布尔型数据两种特殊的基本数据类型元组可选值类型 为类型取别名模拟面试 字符、字符串与集合类型字符串类型字符串的组合字符类型转义字符 字符串类型中的常用方法集…

Redis的大key

什么是 redis 的大 key redis 的大 key 不是指存储在 redis 中的某个 key 的大小超过一定的阈值,而是该 key 所对应的 value 过大对于 string 类型来说,一般情况下超过 10KB 则认为是大 key;对于set、zset、hash 等类型来说,一般…