linux变量的分类

文章目录

    • bash中的引号
    • linux变量的分类
      • 1.环境变量
      • 2.本地变量:
      • 3.局部变量
      • 4.内置变量
      • 5. 位置参数变量
      • 6. 特殊变量
    • 变量的定义规则
      • 8.数组

bash中的引号

双引号"" :会把引号的内容当成整体来看待,允许通过 符号引用其他变量值单引 号 ′ ′ :会把引号的内容当成整体来看待,禁止引用其他变量值, s h e l l 中特殊符号都被视为普通字符反撇号 ‘ ‘ :反撇号和 符号引用其他变量值 单引号'' :会把引号的内容当成整体来看待,禁止引用其他变量值,shell中特殊符号都被视为普通字符 反撇号`` :反撇号和 符号引用其他变量值单引′′:会把引号的内容当成整体来看待,禁止引用其他变量值,shell中特殊符号都被视为普通字符反撇号‘‘:反撇号和()一样,引号或括号里的命令会优先执行,如果存在嵌套,反撇号不能用

linux变量的分类

在Linux操作系统中,变量是用来存储数据的一种方式,它们可以被用来存储字符串、数字、文件路径等。根据用途和类型,Linux中的变量可以分为以下几类:

1.环境变量

环境变量是全局可用的变量,它们影响着系统的行为和程序的执行方式。环境变量可以进一步细分为以下两种:
系统级环境变量
系统级环境变量是所有用户共享的变量,通常定义在 /etc/profile 或 /etc/profile.d/*.sh 文件中。这些变量对整个系统生效,适用于所有登录系统的用户。
用户级环境变量
用户级环境变量仅对特定用户有效,通常定义在用户的家目录下的配置文件中,例如 ~/.bash_profile 或 ~/.bashrc。这些变量会在用户登录时加载,并覆盖系统级变量的值。

2.本地变量:

当前用户自定义的变量。当前进程中有效,其他进程及当前进程的子进程无效,其作用范围仅限于当前 Shell 会话。这类变量可以通过 export 命令导出为环境变量,从而使其在子进程中可用。例如

A="Hello World"
export A        

3.局部变量

局部变量的作用范围仅限于定义它的脚本或函数内部。一旦脚本或函数结束,局部变量就会被销毁。例如,在 Shell 脚本中定义的变量如果没有使用export导出,则只在脚本内部有效。

4.内置变量

内置变量是由 Shell 提供的标准变量,用于存储与Shell运行相关的状态信息。例如:

$PATH:指定可执行文件的搜索路径。
$HOME:表示当前用户的主目录。
$PS1:定义 Shell 提示符的格式。

5. 位置参数变量

位置参数变量用于传递命令行参数到脚本中。例如:

$0:表示脚本名称。
$1, $2, …:表示传递给脚本的第一个、第二个参数等。
$#:表示传递给脚本的参数个数。
$*:脚本后面所有参数,参数当成一个整体输出,每一个变量参数之间以空格隔开
$@: 脚本后面所有参数,参数是独立的,也是全部输出

6. 特殊变量

特殊变量是由Shell预定义的变量,用于存储特定的信息。例如:

$$:表示当前Shell进程的 PID。
$?:上一条命令执行后返回的状态,当返回状态值为0时表示执行正常,非0值表示执行异常或出错若退出状态值为0,表示命令运行成功若退出状态值为127,表示command not found若退出状态值为126,表示找到了该命令但无法执行(权限不够)若退出状态值为1&2,表示没有那个文件或目录

变量的定义规则

1.默认情况下,shell里定义的变量是不分类型的,可以给变量赋与任何类型的值;等号两边不能有空格,对于有空格的字符串做为赋值时,要用引号引起来
变量名=变量值2.变量的获取方式:	
$变量名     
${变量名}3.变量名区分大小写	4.变量名可以是字母或数字或下划线,但是不能以数字开头或者特殊字符5.取消变量:     
unset  变量名6.命令的执行结果可以保存到变量
7.有类型变量 declare
-i 将变量看成整数 
-r 使变量只读  readonly
-x 标记变量通过环境导出  export
-a	指定为索引数组(普通数组);查看普通数组
-A 指定为关联数组;查看关联数组

在这里插入图片描述

8.数组

在Linux系统中,Bash shell 提供两种类型的数组:普通数组和关联数组。这两种数组各有特点,适用于不同的场景。
普通数组
普通数组是基于索引的,索引通常是从0或1开始的,具体取决于你的设置。你可以使用整数作为索引来存储和访问数组元素。

1. 创建数组
方法1:使用括号
array=(1 2 3)
方法2:单独赋值
array[0]=1
array[1]=2
array[2]=32. 访问数组元素
访问特定元素
echo ${array[0]}  # 输出第一个元素
访问所有元素
echo ${array[@]}  # 输出所有元素
或者
echo ${array[*]}  # 输出所有元素3. 获取数组长度
echo ${#array[@]}  # 输出数组长度
或者
echo ${#array[*]}  # 输出数组长度4. 遍历数组
for element in "${array[@]}"
doecho $element
done
或者使用索引遍历:
for (( i=0; i<${#array[@]}; i++ ))
doecho ${array[i]}
done5. 删除数组元素
unset array[2]  # 删除索引为2的元素
或者删除整个数组:
unset array6. 修改数组元素
array[1]=newElement  # 将索引为1的元素修改为newElement7. 在数组中添加元素
array+=([3]=5)  # 在数组末尾添加新元素或在指定位置添加元素,例如在索引3处添加5
或者使用+=操作符在末尾添加:
array+=(5)  # 在数组末尾添加58. 获取数组的索引列表
echo ${!array[@]}  # 输出所有索引号,例如0 1 2等

关联数组
关联数组(也称为映射或字典)使用字符串作为索引来存储元素。这使得它们非常适合存储键值对。

1.创建和初始化关联数组
在较新的 Bash 版本中(Bash 4.0及以上),你可以使用declare命令来声明关联数组。
# 声明关联数组
declare -A assoc_arr
# 初始化关联数组
assoc_arr[key1]=value1
assoc_arr[key2]=value22.访问关联数组元素
echo ${assoc_arr[key1]}  # 输出 value1
declare -A  #输出declare -A assoc_arr='([key2]="value2" [key1]="value1" )'3.操作关联数组
关联数组还支持一些特殊的操作,比如列出所有键或值。
# 列出所有键
echo ${!assoc_arr[@]}  # 输出 key1 key2 等所有键
# 列出所有值
echo ${assoc_arr[@]}   # 输出 value1 value2 等所有值
echo ${assoc_arr[*]}   # 输出 value1 value2 等所有值

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

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

相关文章

逻辑回归知识点

一、逻辑回归概念 逻辑回归(Logistic Regression)是一种广泛应用于分类问题的统计方法&#xff0c;尤其适用于二分类问题。 注意: 尽管名称中有"回归"二字&#xff0c;但它实际上是一种分类算法。 解决二分类的问题。 API&#xff1a;sklearn.linear_model.Logis…

GCC内存占用统计使用指南

GCC 的 --print-memory-usage 选项用于在编译链接过程中输出程序的内存占用统计信息&#xff0c;特别适用于嵌入式开发等内存受限的场景。其主要作用和输出内容如下&#xff1a; 核心功能 显示内存分段占用 输出程序在目标设备内存中的分段占用情况&#xff0c;通常包括&#…

Vue3 + Typescript:类型使用记录 / 类型注解 / 积累

一、ReturnType<typeof createApp> ReturnType<typeof createApp> 是一种类型安全的写法&#xff0c;是 TypeScript 中的一个高级类型&#xff0c;它用于获取函数 createApp 的返回类型。 实例&#xff1a; import registerFocus from ./focus // 获取焦点 impo…

SIFT 算法原理详解

SIFT 算法原理详解 SIFT&#xff08;尺度不变特征变换&#xff0c;Scale-Invariant Feature Transform&#xff09;是一种经典的局部特征检测和描述算法&#xff0c;它能够在不同的尺度、旋转和光照变化下稳定地检测图像特征。SIFT 主要包括以下几个步骤&#xff1a;尺度空间极…

2024年认证杯SPSSPRO杯数学建模D题(第二阶段)AI绘画带来的挑战解题全过程文档及程序

2024年认证杯SPSSPRO杯数学建模 D题 AI绘画带来的挑战 原题再现&#xff1a; 2023 年开年&#xff0c;ChatGPT 作为一款聊天型AI工具&#xff0c;成为了超越疫情的热门词条&#xff1b;而在AI的另一个分支——绘图领域&#xff0c;一款名为Midjourney&#xff08;MJ&#xff…

电子电路:全面深入了解晶振的定义、作用及应用

本次了解重点: 1.压电效应的数学描述 2.生产工艺以及关键工序 3.电路设计部分如负阻原理和匹配电容计算 4.失效案例比如冷启动问题 5.新形态晶振技术引入5G和量子计算 6.温补晶振的补偿机制 7故障案例讲解-更换负载电池或增加预热电路 蓝牙音频断续-频偏导致 工控机死机-起振电…

【Java实用工具类】手撸SqlBuilder工具类,优雅拼接动态SQL,MyBatisPlus同款风格!

&#x1f4cc; 正文&#xff1a; 有时候我们项目底层是 JdbcTemplate 查询&#xff0c;没法像 MyBatisPlus 一样用 Wrapper 拼接条件&#xff0c;但我们又不想手撸字符串。那怎么办&#xff1f;我今天就给你整了个 SqlBuilder 工具类&#xff0c;支持 eq、ne、like、in、gt、l…

WEB3——开发者怎么查看自己的合约日志记录

在区块链中查看合约的日志信息&#xff08;也叫事件 logs&#xff09;&#xff0c;主要有以下几种方式&#xff0c;具体方法依赖于你使用的区块链平台&#xff08;如 Ethereum、BSC、Polygon 等&#xff09;和工具&#xff08;如 Etherscan、web3.js、ethers.js、Hardhat 等&am…

Maven-生命周期

目录 1.项目对象模型 2.依赖管理模型 3.仓库&#xff1a;用于存储资源&#xff0c;管理各种jar包 4.本地仓库路径 1.项目对象模型 2.依赖管理模型 3.仓库&#xff1a;用于存储资源&#xff0c;管理各种jar包 4.本地仓库路径

redis数据过期策略

redis数据过期策略有两种方案 1.惰性删除 2.定期删除 首先说惰性删除&#xff0c;对于已经过期的数据&#xff0c;访问这个key的时候判断key是否过期&#xff0c;如果过期则删除&#xff0c;这种方式对cpu友好&#xff0c;只有使用key的时候才会进行过期检查&#xff0c;用不到…

P1040 [NOIP 2003 提高组] 加分二叉树

目录 题目算法标签: 区间 d p dp dp, 动态规划, d f s dfs dfs思路代码 题目 P1040 [NOIP 2003 提高组] 加分二叉树 算法标签: 区间 d p dp dp, 动态规划, d f s dfs dfs 思路 给出的是一颗子树的中序遍历, s c o r e l r r o o t score l \times r root scorelrro…

uni-app学习笔记十七-css和scss的使用

SCSS 和 CSS的异同点 我们可以使用css和scss来设置样式。其中SCSS&#xff08;Sassy CSS&#xff09;是 CSS 预处理器 Sass&#xff08;Syntactically Awesome Stylesheets&#xff09;的一种语法格式&#xff0c;而 CSS&#xff08;Cascading Style Sheets&#xff09;是标准…

Spring Boot中Excel处理完全指南:从基础到高级实践

Excel处理基础知识 1.1 为什么需要在应用中处理Excel文件&#xff1f; 在企业应用开发中&#xff0c;Excel文件处理是一个非常常见的需求&#xff0c;主要用于以下场景&#xff1a; 数据导入&#xff1a;允许用户通过Excel上传批量数据到系统 数据导出&#xff1a;将系统数据…

Python编程基础(四) | if语句

引言&#xff1a;很久没有写 Python 了&#xff0c;有一点生疏。这是学习《Python 编程&#xff1a;从入门到实践&#xff08;第3版&#xff09;》的课后练习记录&#xff0c;主要目的是快速回顾基础知识。 练习1&#xff1a;条件测试 编写一系列条件测试&#xff0c;将每个条…

使用pandas实现合并具有共同列的两个EXCEL表

表1&#xff1a; 表2&#xff1a; 表1和表2&#xff0c;有共同的列“名称”&#xff0c;而且&#xff0c;表1的内容&#xff08;行数&#xff09;<表2的行数。 目的&#xff0c;根据“名称”列的对应内容&#xff0c;将表2列中的“所处行业”填写到表1相应的位置。 实现代…

ERP学习-AP

业务需要。持续更新学习进度 借助网上零搭建平台上手实操 这个是简道云平台页面链接&#xff0c;登录的化去手机号登录 目前开始对应付模块进行学习

Dify知识库下载小程序

一、Dify配置 1.查看或创建知识库的API 二、下载程序配置 1. 安装依赖resquirements.txt ######requirements.txt##### flask2.3.3 psycopg2-binary2.9.9 requests2.31.0 python-dotenv1.0.0#####安装依赖 pip3 install -r requirements.txt -i https://pypi.tuna.tsinghua.…

【PbstarAdmin】微前端架构下的高效后台管理系统解决方案

如果你正在寻找一个高效、稳定、易于使用、易于扩展的管理后台解决方案&#xff0c;PbstarAdmin 绝对值得一试。以下是它的在线演示和官方文档地址&#xff0c;你可以先睹为快&#xff1a; 在线演示&#xff1a;http://pbstar-admin.pbstar.cn/官方文档&#xff1a;http://pbs…

Java基础之数组(附带Comparator)

文章目录 基础概念可变参数组数组与ListComparator类1,基本概念2,使用Comparator的静态方法&#xff08;Java 8&#xff09;3,常用Comparator方法4,例子 排序与查找数组复制其他 基础概念 int[] anArray new int[10];只有创建对象时才会使用new关键字&#xff0c;所以数组是个…

Apache Doris 在数据仓库中的作用与应用实践

在当今数字化时代&#xff0c;企业数据呈爆炸式增长&#xff0c;数据仓库作为企业数据管理和分析的核心基础设施&#xff0c;其重要性不言而喻。而 Apache Doris&#xff0c;作为一款基于 MPP&#xff08;Massively Parallel Processing&#xff0c;大规模并行处理&#xff09;…