Linux Shell编程系列--变量的定义与使用

一、目的

        上一篇我们简单介绍了shell脚本的组成以及如何运行一个shell脚本,本篇将详解讲解shell中的变量。在Shell脚本中,变量是用来存储和处理数据的基本结构。

二、介绍

        1、定义变量

                变量名与等号(=)后跟值来定义一个变量,变量名称与值之间只有一个"="(绝对不能有空格)。

                变量名与等号之间不能有空格,但赋值内容可以包含空格,如果值本身含有空格或特殊字符,应将整个变量引用用双引号包围起来。         

        

                上图中定义了三个变量,第一个变量使用单引号''包含其字符串值;第二个使用双引号""包含其字符串值;第三个变量其值也是字符串;第四个字符串是一个数值(但其还是字符串)。

                当你给一个变量赋值时,无论赋值的内容是什么类型的数据(数字、文本或特殊字符),Shell都会将其作为字符串来处理。

 

        2、引用变量

                使用美元符号"$"引用变量的值;如果变量名包含特殊字符或者与后续字符无明显分隔时,可以使用花括号 {} 来包裹变量名以避免歧义。                

        上图中列举了打印变量my_var_three的几种方法,需要特别注意的是如果变量名和打印内容粘连在一起,此时必须添加花括号,否则会认为是一个新的变量名。

        上图中的执行结果如下:

 

        3、只读变量 

                通过指定readonly关键字可以定义只读变量。

 

        对只读变量赋新值,执行时会报错。

        上图中对只读变量赋新值直接显示报错。

        4、 删除变量

                使用 unset 命令可以删除已定义的变量。

                 

                unset之后再打印此变量则显示未空(即该变量未定义)

 

        5、命令替换

                即将命令的执行结果直接作为变量的值,有两种方式:

  • 使用反引号
  • 使用$(command)形式               

 

         

        6、环境变量 

                环境变量是一种特殊的Shell变量,它们不仅对当前Shell进程可见,还会被子进程继承。 shell脚本中可以引用环境变量的值,也可以将变量导出为环境变量。

                使用环境变量

        

 

                导出环境变量

export my_var_four="abc"
export my_var_four #在一个已经定义了值的变量基础上进行导出

        7、局部变量和全局变量 

                Shell脚本中没有严格的局部变量概念,但在函数内部定义的变量通常只能在该函数内部访问。环境变量就是全局变量。

        8、数组变量

                Bash支持一维数组,可通过索引引用其元素。

 

               

        以上,就是shell脚本的基本内容。         

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

antdpro框架npm install 报错,切换tyarn安装成功。

报错日志 有时间补 当前版本 解决办法 进入工作目录 安装官方推荐的tyarn工具:npm install yarn tyarn -g 进行依赖安装:tyarn 启动项目 :tyarn start 注意: 技术迭代较快,建议查询官网后实践,以上作为…

大模型实战营第二期——3. 基于 InternLM 和 LangChain 搭建你的知识库

github地址:InternLM/tutorial-书生浦语大模型实战营文档地址:基于 InternLM 和 LangChain 搭建你的知识库视频地址:基于 InternLM 和 LangChain 搭建你的知识库Intern Studio: https://studio.intern-ai.org.cn/console/instance动手学大模型…

前端面试题——JS实现反转链式表

前言 反转单向链表就是将整个单链表的数据进行倒序的过程。 例如,如果反转之前的单链表是0->1->2->3,那么反转之后的单链表应该是3->2->1->0。这个操作通常是通过改变链表中每个节点的指针方向来实现的,即让每个节点的指…

《Git 简易速速上手小册》第10章:未来趋势与扩展阅读(2024 最新版)

文章目录 10.1 Git 与开源社区10.1.1 基础知识讲解10.1.2 重点案例:Python 社区使用 Git10.1.3 拓展案例 1:Git 在大型开源项目中的角色10.1.4 拓展案例 2:支持开源项目的 Git 托管平台 10.2 新兴技术与 Git 的整合10.2.1 基础知识讲解10.2.2…

猫头虎分享已解决Bug || Go Error: Missing Return at End of Function

博主猫头虎的技术世界 🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能! 专栏链接: 🔗 精选专栏: 《面试题大全》 — 面试准备的宝典!《IDEA开发秘籍》 — 提升你的IDEA技能!《100天精通鸿蒙》 …

【算法与数据结构】42、LeetCode接雨水

文章目录 一、题目二、解法三、完整代码 所有的LeetCode题解索引,可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、解法 思路分析:   程序如下: 复杂度分析: 时间复杂度: O ( ) O() O()。空间复…

猫头虎分享已解决Bug || Go Error: redeclared as imported package name ‍

博主猫头虎的技术世界 🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能! 专栏链接: 🔗 精选专栏: 《面试题大全》 — 面试准备的宝典!《IDEA开发秘籍》 — 提升你的IDEA技能!《100天精通鸿蒙》 …

微服务入门篇:http客户端Feign(远程调用,自定义配置,Feign的性能优化,Feign服务抽取)

目录 1.基于Feign的远程调用1.RestTemplate方式调用存在的问题2.Feign的介绍3.定义和使用Feign客户端 2.自定义配置1.方式一:配置文件方式2.方式二: java代码方式,需要先声明一个Bean: 3.Feign的性能优化1.Feign底层的客户端实现2.连接池配置 4.Feign的最…

Java:JDK8新特性(Stream流)、File类、递归 --黑马笔记

一、JDK8新特性(Stream流) 接下来我们学习一个全新的知识,叫做Stream流(也叫Stream API)。它是从JDK8以后才有的一个新特性,是专业用于对集合或者数组进行便捷操作的。有多方便呢?我们用一个案…

课堂秩序要求有哪些内容

你是否曾经疑惑,为什么有些课堂总是秩序井然,而有些则混乱不堪?作为一位经验丰富的老师,我想告诉你,课堂秩序不仅仅是学生安静听讲那么简单,它背后涉及到许多关键因素,直接影响着教学质量和学习…

Learn LaTeX 015 - LaTex Typeset 抄录

https://www.douyin.com/user/self?modal_id7306721102380764453&showTabpost GitHub address: https://github.com/yasenstar/learn_latex Gitee address: https://gitee.com/yasenstar/learn_latex

Acwing---837. 连通块中点的数量

连通块中点的数量 1.题目2.基本思想3.代码实现 1.题目 给定一个包含 n n n个点(编号为 1 ∼ n 1∼n 1∼n)的无向图,初始时图中没有边。 现在要进行 m m m 个操作,操作共有三种: C a b,在点 a 和点 b …

k8s-资源限制与监控 15

资源限制 上传实验所需镜像 Kubernetes采用request和limit两种限制类型来对资源进行分配。 request(资源需求):即运行Pod的节点必须满足运行Pod的最基本需求才能 运行Pod。 limit(资源限额):即运行Pod期间,可能内存使用量会增加&#xff0…

视觉SLAM十四讲学习笔记(二)三维空间刚体

哔哩哔哩课程连接:视觉SLAM十四讲ch3_哔哩哔哩_bilibili​ 目录 一、旋转矩阵 1 点、向量、坐标系 2 坐标系间的欧氏变换 3 变换矩阵与齐次坐标 二、实践:Eigen(1) 运行报错记录与解决 三、旋转向量和欧拉角 1 旋转向量 …

dolphinDB创建适合存放股票代码的分布式数据库

这里我们使用基于哈希分区的数据库: my_db database(db_path, HASH, [SYMBOL, 10])这行代码指定基于哈希分区,同时哈希值使用10个长度,这样既可以存放一般的股票代码,也可以存放比如期权这种比较长的代码 更多的分区表情况请参…

网络编程项目:电子辞典

项目要求: 登录注册功能,不能重复登录,重复注册。用户信息也存储在数据库中。单词查询功能历史记录功能,存储单词,意思,以及查询时间,存储在数据库基于TCP,支持多客户端连接&#x…

Leecode之反转链表

一.题目及剖析 https://leetcode.cn/problems/reverse-linked-list/description/ 二.思路引入 设定三个指针,n1指向空, n2指向head,n3指向下一个元素,将n2->next指向n1,然后三个指针向后遍历重复即可 三.代码引入 /*** Definition for singly-linked list.* struct List…

python从入门到精通(十六):python爬虫的BeautifulSoup4

python爬虫的BeautifulSoup4 BeautifulSoup4导入模块解析文件创建对象python解析器beautifulsoup对象的种类Tag获取整个标签获取标签里的属性和属性值Navigablestring 获取标签里的内容BeautifulSoup获取整个文档Comment输出的内容不包含注释符号BeautifulSoup文档遍历Beautifu…

Redis集群模型

主从 全量同步 增量同步 哨兵 分片集群

【Linux】 网络编程套接字

目录 预备知识 网络字节序 网络字节序和主机字节序转换的库函数 socket编程接口 socket常见API sockaddr结构 套接字的种类 预备知识 1.在IP数据包头部中,有两个IP地址,分别叫做源IP地址和目的IP地址。 2.端口号:是传输层协议的内容…