linux shell 编程之变量总结

[linux]第一天:shell脚本语言:变量、测试、控制语句以及函数的全面详解 shell脚本是一种脚本语言,我们只需使用任意文本编辑器,按照语法编写相应程序,增加可执行权限,即可在安装shell命令解释器的环境下执行。shell 脚本主要用于帮助开发人员或系统管理员将复杂而又反复的操作放在一个文件中,通过简单的一步执行操作完成相应任务,从而解放负担。 阅读详情

一、什么是Shell 变量

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

二、变量的分类

shell中变量大致可以分为下面几类:

  • 系统环境变量
  • 自定义变量
  • 特殊符号变量

系统环境变量

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

使用 "env" 命令可以查看shell所在的系统环境变量

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

常用系统环境变量

变量名称含义
==PATH==与windows环境变量PATH功能一样,设置命令的搜索路径,以冒号为分割
HOME当前用户主目录:/root
SHELL当前shell解析器类型:/bin/bash
==HISTFILE==显示当前用户执行命令的历史列表文件:/root/.bash_history
PWD显示当前所在路径:/root
OLDPWD显示之前的路径
HOSTNAME显示当前主机名:itheima
HOSTTYPE显示主机的架构,是i386、i686、还是x86、x64等:x86_64
==LANG==设置当前系统语言环境:zh_CN.UTF-8

下面随机测试一下输出几个系统环境变量

自定义变量

顾名思义,自定义变量就是用户为了满足使用的方便自定义的一些变量

按照使用范围,自定义变量可按如下分类:

  • 自定义局部变量
  • 自定义常量
  • 自定义全局变量

自定义局部变量

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

使用语法规则

var_name=value

定义变量,需要遵循一定的规则:

  1. 变量名称可以有字母,数字和下划线组成, 但是不能以数字开头

  2. 等号两侧不能有空格

  3. 在bash环境中, 变量的默认类型都是字符串类型, 无法直接进行数值运算

  4. 变量的值如果有空格, 必须使用双引号括起来

  5. 不能使用Shell的关键字作为变量名称

看下面的案例

变量使用

${var_name} 进行查询(使用变量);

变量删除

unset var_name

自定义常量

就是变量设置值以后不可修改的变量叫常量, 也叫只读变量,使用语法为: readonly var_name

自定义全局变量

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

自定义全局变量语法

export var_name1 var_name2

特殊变量

特殊变量在shell编程的某些特殊业务场景下可以发挥意想不到的效果,下面列举几个常用的特殊变量;

特殊变量 :$n

  • 用于接收脚本文件执行时传入的参数
  • $0 用于获取当前脚本文件名称的
  • $1~$9, 代表获取第一输入参数到第9个输入参数
  • 第10个以上的输入参数获取参数的格式: ${数字}, 否则无法获取

执行脚本文件传入参数语法

sh 脚本文件 输入参数1 输入参数2 ...

通过下面的方式输出参数

执行脚本

特殊变量 :$#

获取所有输入参数的个数

基于上面的shell内容简单改造,打印输出参数个数

执行shell,观察结果

特殊变量:$*、$@

都是获取所有输入参数, 用于以后输出所有参数

两者的区别

  • 不使用双引号括起来, 功能一样,$*和$@获取所有输入参数,格式为: $1 $2 ... $n
  • 使用双引号括起来,"$*"获取的所有参数拼接为一个字符串, 格式为: "$1 $2 ... $n", "$@"获取一组参数列表对象, 格式为: "$1" "$2" ... "$n"(使用循环打印所有输入参数可以看出区别)

来看下面的shell脚本

执行这个shell脚本,观察输出效果

特殊变量:$?

用于获取上一个Shell命令的退出状态码, 或者是函数的返回值

每个Shell命令的执行都有一个返回值, 这个返回值用于说明命令执行是否成功,一般来说, 返回0代表命令执行成功, 非0代表执行失败;

控制台输入一个正确的命令,然后再使用这个命令就可以看出效果

特殊变量:$$

用于获取当前Shell环境的进程ID号

自定义系统环境变量

当前用户进入Shell环境初始化的时候,会加载全局配置文件/etc/profile里面的环境变量, 供给所有Shell程序使用;

假如要是所有Shell程序或命令使用的变量, 就可以定义在这个文件中;

创建环境变量步骤

1、编辑/etc/profile全局配置文件

增加命令: 定义变量VAR1=VAR1 并导出为环境变量
扩展: vim里面的命令模式使用G快速定位到文件末尾位置, 使用gg定位到文件首行位置

2、重载配置文件/etc/profile, 因为配置文件修改后要立刻加载里面的数据就需要重载

source /etc/profile

3、在Shell环境中读取系统级环境变量VAR1

Linux系统中shell处理变量详解 阅读详情

相关推荐

Linux Shell编程之变量

在Shell中,可以使用赋值操作符(=)来定义变量。变量名通常由字母、数字和下划线组成,且不能以数字开头。变量名区分大小写。在上面的示例中,我们定义了一个名为name的变量,并将其值设置为"John"。请注意,变量赋值的语句中不能有空格。除了自定义变量外,Shell还提供了一些预定义的特殊变量。这些变量具有特定的含义和用途。$0:脚本的名称。$1$2$3等:脚本的参数。$1表示第一个参数,$2表示第二个参数,以此类推。$#:传递给脚本的参数个数。$@:传递给脚本的所有参数列表。

CodeVorter的博客 83

【Linux基础及shell脚本】Shell脚本中变量的使用

本篇博客详细介绍了 Shell 变量的基础知识和使用方法。我们从 Shell 变量的定义和使用开始,进一步探讨了环境变量和其与普通变量的区别,以及如何设置和删除环境变量。然后,我们详细讲解了位置参数的概念、使用方式和应用实例。接着,我们探索了 Shell 中的特殊变量,包括它们的功能和用途。我们还详细讨论了 Shell 变量的操作,包括字符串截取和长度计算等实例演示。最后,我们深入了解了全局变量和局部变量的区别,以及在函数中正确使用变量的方法。

Ricky的博客 3525

Vivado里LDPC IP核怎么配?手把手教你从6144bit数据到完整参数设置

本文详细介绍了在Vivado中配置LDPC IP核的完整流程,从6144bit数据的参数计算到实际IP核设置。通过分析基本图选择、扩展因子计算和移位参数确定等关键步骤,帮助工程师高效完成LDPC编译码的硬件实现,并提供了时序控制、仿真验证和性能优化的实用技巧。

weixin_30352645的博客 518

Linux之shell变量

变量是在程序中保存用户数据的一段内存存储空间变量名是内存空间的首地址原则:直接使用,不需要变量声明格式:变量名=值概念:上述以赋值形态形成的变量定义形式称为自定义变量引用变量的值:$变量名${表达式或变量名}10241024[root@server ~]# set | more #分页显示[root@server ~]# declare | more #也是分页显示[root@server ~]# export 环境变量=值。

huaz_md的博客 2270

Sigrity XtractIM实战:5步搞定IC封装宽带模型提取(附BGA案例)

本文通过一个典型BGA封装案例,详细介绍了使用Cadence Sigrity XtractIM工具进行IC封装宽带模型提取的五步实战流程。内容涵盖从环境准备、参数设置、结果验证到模型导出的完整操作,重点阐述了如何利用XtractIM生成高精度、紧凑的宽带SPICE模型,以解决高速电路设计中因封装模型不准导致的信号与电源完整性问题,助力工程师提升仿真精度与设计效率。

a1b2c的博客 319

基于QEMU的openEuler aarch64虚拟机快速部署与漏洞验证指南

本文提供了一份基于QEMU在个人电脑上快速部署openEuler aarch64虚拟机的详细指南。内容涵盖从软件准备、目录规划、QEMU安装、虚拟磁盘创建到系统安装与SSH配置的全过程,并以CVE-2024-1086内核漏洞为例,演示了如何在该虚拟环境中进行安全漏洞的验证与补丁测试,为安全研究和运维测试提供了一个低成本、高效率的ARM架构沙箱环境。

earth的博客 438

Linux系统中shell脚本的变量

赋值时使用的引号 双引号" ":允许通过$符号引用其他变量值 单引号' ':禁止引用其他变量值,$视为普通字符, 反撇号``:命令替换,提取命令执行后的输出结果与$( )效果相同 {}可以分隔变量值 定义变量时中间有特殊字符时 比如空格 用单引号或者双引号括起来

asdfg___xiaobai的博客 4341

基于NXP1778的CAN自动波特率检测

一、概念 NXP1778芯片内部自带一个CAN控制器。CAN模块由两部分组成:控制器和验收滤波器。所有的寄存器和RAM都以32位字宽度来访问。 CAN自动波特率检测主要用于以一种CAN的转换的产品中。产品中CAN部分的波特率以前都是通过网页中修改然后配置下去的,依据实际情况的考虑,如果CAN部分的波特率能够根据客户设备的改变而自动改变,将会增加其灵活性。   二、原理 根据CAN控制器的

菜鸟的痕迹专栏 5271

Linux Shell编程规范与变量

自定义变量是由系统用户自己定义的变量,只在用户自己的 Shell环境中有效,因此又称为本地变量。在编写 shell脚本程序时,通常会设置一些特定的自定义变量,以适应程序执行过程中的各种变化。满足不同的需要Bash 中的变量操作相对比较简单,不像其他高级编程语言(如C/C++、Java 等)那么复杂。在定义一个新的变量时,一般不需要提前进行声明,而是直接指定变量名称并赋给初始值(内容)即可。定义变量的基本格式为“变量名=变量值”,等号两边没有空格。

2501_91557222的博客 1249

避免踩坑!WIN11 22H2更新后共享打印机失效的终极解决方案

本文详细解析了WIN11 22H2更新后共享打印机失效的问题,特别是常见的0x00000709错误代码。通过系统更新机制分析、错误代码解读,提供从基础到高级的完整解决方案,包括注册表修复、组策略调整和驱动兼容性处理,帮助用户彻底解决打印机共享问题并预防未来故障。

pp12345的博客 533

【WRF数据准备】气象驱动数据-ERA5再分析数据(Copernicus)

【WRF数据准备】气象驱动数据-ERA5再分析数据

WW、forever的博客 5529

Linux——Shell的基本编程规范与变量

‌Shell 在 Linux 中的核心价值‌桥梁作用‌:作为用户与内核的纽带,简化了系统操作。‌自动化引擎‌:通过脚本将重复性工作流程化,提升效率。‌系统管理中枢‌:几乎所有的系统配置、监控和维护都依赖 Shell。‌开发与运维工具链‌:支持开发调试、环境配置和故障排查。‌高度可定制性‌:允许用户打造个性化的高效工作环境。但这些相较于今天的主要内容... ...都不重要!因为今天主要讲的是——Shell脚本的基本编程与其变量的作用及类型。

Lemon__ing的博客 1259

C# 工业视觉性能极致优化:多线程推理池 + 对象复用 + 批量检测,速度提升 10 倍实战

set;} // 输入图像set;} // 异步返回结果set;} // 用于监控延迟性能优化不是魔法,而是对资源生命周期的精细管理和对硬件特性的充分利用。多线程池解决了 CPU/GPU 闲置问题。对象池解决了 GC 停顿问题。零拷贝解决了总线带宽瓶颈。严格的 Dispose解决了内存泄漏问题。这套架构已在多个高速锂电、3C 电子检测产线落地,轻松应对 200ms 甚至 50ms 的严苛节拍。记住,在工业领域,稳定性与速度同等重要。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 303

Linux Shell 编程,Shell 变量详解

就是shell设计者事先已经定义好的变量,可以直接在shell脚本中使用!/bin/bash。

大河之犬的博客 1398

SAP Fiori Launchpad 上看不到任何 tile 应该怎么办?

中心UI组件是一个框架,为所有SAPFiori应用程序提供公共基础设施SAPFiorilaunchpad是所有SAPFioriUI的基础,并为SAPFiori应用程序提供基本功能,如登录,界面大小,应用程序之间的导航,和基于角色的应用程序目录。ABAP前端服务器包含所有基础设施组件,用于为客户端生成SAPFiori应用程序特定的UI,并与SAPBusinessSuite后端系统通信。SAPFiori应用程序的处理过程如下首先,客户端加载SAPFiori应用程序的界面。...

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 941

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Linux【实操篇】—— Shell 编程入门、变量

Linux Shell 中的变量分为系统变量和用户自定义变量。系统变量顾名思义就是系统已经设置好的变量,诸如HOMEHOME、HOMEPWD、USERUSER、USERSHELL 等都是系统变量。使用指令set可以查看系统中所有的系统变量。变量名称=值;unset 变量名;readonly 变量名称=值(静态变量不能撤销);$变量。#定义变量AA=100#输出变量echo A=$A#撤销变量Aunset Aecho $A#声明静态的变量B = 3。

2401_87197505的博客 1136

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

linux shell编程变量,linux shell编程--变量

linux shell编程--变量2014-10-16本博客所有文章采用的授权方式为自由转载-非商用-非衍生-保持署名,转载请务必注明出处,谢谢。声明:本博客欢迎转发,但请保留原作者信息!新浪微博:@Lingxian_kong;博客地址:孔令贤的博客;微信公众号:飞翔的尘埃;内容系本人学习、研究和总结,如有雷同,实属荣幸!变量引用用set命令可以查看所有的变量unset var命令可以清除变量va...

weixin_31897613的博客 157

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

linux shell编程规范与变量(一)

Shell脚本是 Linux 系统中一种强大的自动化工具,它将一系列的 Linux 命令组合起来,形成一个可执行的脚本文件。通过执行这个脚本文件,可以批量完成复杂的系统维护任务。而变量作为shell脚本中的核心元素,用于存储和管理脚本执行过程中的各种数据,为脚本提供了灵活性和动态性。自定义变量是由系统用户自已定义的变量,只在用户自己的Shell环境中有效,因此又被称为本地变量。在编写 shell脚本程序时,通常会设置一些特定的自定义变量,以适应程序执行过程中的名种变化,满足不同的需要。

2501_91344113的博客 1444

Linux Shell编程中的变量详解

定义数组bash访问元素bashecho ${fruits[1]} # 输出banana(索引从0开始)echo ${fruits[@]} # 输出所有元素echo ${#fruits[@]} # 输出数组长度。

xghcg756的博客 471

Linux:Shell编程,Shell变量定义,查看,撤销,结果赋值

命令: ./myshell.sh 后缀可以是任何,甚至可以不用 sh ./myshell.sh 运行脚本两种方式 set 显示当前shell中所有变量 $HOME、$PWD、$SHELL、$USER 变量=值 unset 变量 readonly 变量=值 命令的返回值: A=`ls -la` A=$(date) 一、为什么要学习Shell编程...

yubin1285570923的博客 3222

Linux —— Shell编程之变量赋值和引用

Linux —— Shell编程之变量赋值和引用 Linux的shell编程是一种非常成熟的编程语言,它支持各种类型的变量。有三种主要的变量类型:环境变量、内部变量和用户变量。 环境变量(environment variable)是系统环境的一部分,不必去定义它们。可以在shell程序中使用它们,某些变量(比如PATH)还能在shell中加以修改。内部变量(built-

boshuzhang的专栏 4万+

Linux【实操篇】—— Shell 编程入门、变量、运算符、条件判断、流程控制

Linux 操作系统Shell编程快速入门、shell变量、、运算符、条件判断、流程控制(if、case、for、while语句)。

商务合作 | 共同学习 | 携手共进 11万+

Linux _ Shell编程 — 变量

Linux _ Shell编程 — 变量shell脚本的基础知识shell脚本的本质shell编程的基本过程shell变量用户自定义变量位置变量环境变量 shell脚本的基础知识 shell脚本的本质 语言的分类有: 编译性语言 解释性语言 C语言、C++语言、JAVA、PHP、Python等,不同编译器编译的执行文件不同,运行的平台也不尽相同。 shell脚本语言是解释性语言 shell脚本的本质:shell命令的有序集合。 shell编程的基本过程 step1 :建立shell文件

。 183

linux系统——Shell编程之变量解释

linux系统——Shell编程之变量解释 - Shell能做什么 自动化批量系统初始化程序 (update,软件安装,时区设置,安全策略…) 自动化批量软件部署程序 (LAMP,LNMP,Tomcat,LVS,Nginx) 应用管理程序 (KVM,集群管理扩容,MySQL,DELLR720批量RAID) 日志分析处理程序(PV, UV, 200代码, !200代码, top 100, grep/awk) 自动化备份恢复程序(MySQL完全备份/增量 + Crond) 自动化管理程序(批量远程修改密码,软

qq_46424955的博客 261

linux设置脚本的全局变量,linux shell编程学习笔记(3)shell变量

1、什么是变量保存变化的数据——变量名:名称固定,由系统预设或用户自定义——变量值:根据用户设置、系统环境变化而变化2、如何定义变量——变量名=变量的值2.1变量名的规则(1)数字、字母、下划线(2)字母区分大小写(3)当变量名相同时,后赋值的生效(4)不能以数字开头(5)等号两边不能有空格(6)能以下划线开头(7)变量名不能有特殊符号(8)尽量不要使用系统关键字做变量名3、如何使用变量——#$变...

weixin_39710106的博客 1702
上一篇: springboot 整合使用redis发布订阅功能
下一篇: 【linux】shell 编程之字符串与数组
逆风飞翔的小叔
逆风飞翔的小叔 新星创作者: 大数据技术领域 新星创作者: 大数据技术领域
博客等级 码龄5年 1万+粉丝 215原创
评论 31
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

逆风飞翔的小叔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值