当前位置: 首页 > news >正文

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.xdnf.cn/news/785179.html

相关文章:

  • [特殊字符] Unity 性能优化终极指南 — Text / TextMeshPro 组件篇
  • WebRTC中sdp多媒体会话协议报文详细解读
  • 深入理解 C# Razor Pages:构建现代 Web 应用的利器
  • 蓝桥杯 k倍区间
  • JsonCpp 库如何集成到Visual studio
  • 报名召集:香港科技大学(广州)智能交通学域2025年博士项目夏令营
  • Go语言学习-->编译器安装
  • 国标GB/T 28035:验收规范解读
  • 十.显式类型转换
  • 转战web3远程工作的英语学习的路线规划
  • 《前端面试题:CSS动画全面解析》
  • 机器学习在多介质环境中多污染物空间预测的应用研究
  • 结构型设计模式之Decorator(装饰器)
  • new操作符具体做了什么
  • 枫之谷Artale端午节大当机----后端技术的巨大风险
  • 前端导入Excel表格
  • 新手小白使用VMware创建虚拟机练习Linux
  • 大宽带怎么做
  • 服务器租用:高防CDN和加速CDN的区别
  • 前端(vue)学习笔记(CLASS 7):vuex
  • 每天掌握一个Linux命令 - lsof
  • ES101系列09 | 运维、监控与性能优化
  • DrissionPage 性能优化实战指南:让网页自动化效率飞升
  • 2.3 关于async/await的原理介绍
  • word页眉添加下横线以及部分内容右对齐问题
  • 隧道监测预警系统:构筑智慧交通的安全中枢
  • 在Mathematica中实现Newton-Raphson迭代
  • 归并排序:高效稳定的分治算法
  • Qwen2.5-VL 损失函数
  • 今日行情明日机会——20250603