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 等所有值