Linux编程:Shell中的变量

系统启动后会产生许多环境变量,用户可以使用 set 命令查看这些环境变量

  • 系统中常见的环境变量

家目录位置变量 HOME

系统语言变量 LANG

临时修改系统语言可以重新指定此变量的值:

LANG=zh_CN.UTF-8

交互程序变量 SHELL

命令搜索路径变量 PATH

主提示符变量 PS1

#查看当前使用的主提示符表达式
# echo $PS1
[\u@\h \W]\$

Linux编程:Shell中的变量_第1张图片

辅助提示符变量 PS2


只读环境变量

查看系统中的只读环境变量如下:

Linux编程:Shell中的变量_第2张图片


在配置文件中修改环境变量

Linux编程:Shell中的变量_第3张图片


传递参数的位置变量

Bash 定义了 9 个位置变量,分别是$1、 $2、 $3、 $4…$9。脚本编写者在脚本中引用这 9 个变量,获取传递给脚本的参数。

系统预先定义的变量

常见的预定义变量及其含义如下

 $0:保存当前程或脚本的名称。
 $*:保存传递给脚本或进程的所有参数。
 $$:当前进程或脚本的 PID 号。
 $!:后台运行的最后一个进程的 PID 号。
 $?:用于返回上一条命令是否成功执行。如果成功执行,将返回数字 0,否则返回非零数字(通常情况下都返回数字 1)。
 $#:用于保存脚本的参数个数。


用户自定义变量补充知识:

如果用户希望定义一个不能更改值的只读变量,可以先定义变量,然后使用readonly 命令将变量转换为只读变量。

#定义变量 PI
# PI=3.14
#使用命令 readonly 将变量 PI 转换为只读变量,然后验证
# readonly PI
# PI=3.1415
-bash: PI: readonly variable

使用变量运算的例子:

#先定义变量 A 和 B 的值
# A=12
# B=12
#使用 expr 命令计算变量 A、 B 之和、
# expr $A + $B
24

使用环境变量$RANDOM 产生随机数

清除变量可以使用命令 unset:


Shell 中的数组

与使用变量一样,使用数组前也必须对其进行定义(许多编程语言将这个过程称为声明),定义数组时应该为其赋值。
【 数组的格式】
完整的数组元素由数组名和索引组成,其格式如下:
ARRAY[index]

【 定义数据】
( 1)在 Bash 中定义数组有两种方法,第一种方法是直接在定义时为所有的数组元素
赋值:
#在定义数组时为其赋值
# ARRAY=(1 2 3 4 5)
使用这种方法对数组进行定义时,系统会自动为数组中的各元素进行赋值操作。例如
上面的示例中,会自动为 ARRAY[0]赋值为 1、 ARRAY[1]赋值为 2……依此类推,直到完
成对所有数组元素的赋值操作为止。
( 2)第二种方法是对数组中的每个数组元素进行赋值:
#为数组中的特定元素赋值
# ARRAY[0]=1; ARRAY[4]=5; ARRAY[3]=4
使用这种方法对数组定义时,可以不按照数组下标的先后顺序进行操作,也不必对数
组中的每一个元素都赋值。

( 3)如果需要修改数组中某个元素的值,可以使用数组定义中的第二种方法:
#使用重新定义的方法修改数组元素的值
# ARRAY[1]=2

# ARRAY[2]=3

数组的使用

( 1)如果需要引用数组中的某个元素,可以使用数组名称加索引的方式:
#使用 echo 命令显示数组 ARRAY 中第 3 个元素的值
# echo ${ARRAY[2]}
3
与其他语言中引用数组元素不同,在 Bash 中需要将数组元素放入大括号“ {}”内。其
目的是为了避免 Bash 将数组名误解为一个变量。
( 2)如果不指定数组索引,将会显示数组中第 1 个元素的值:
#不使用下标时,将默认引用数组中的第 1 个元素
# echo $ARRAY
1
( 3)有时可能希望看到数组中所有元素的值,这样做的目的可能是为了检查其值是否有错误:
#输出数组中所有元素的值
# echo ${ARRAY[*]}
1 2 3 4 5
在上面的示例命令中,“ *”表示所有元素下标。
( 4)当数组中的元素非常多时,可能查看起来非常不方便。这时可以指定查看的元素范围,例如:
#查看数组中下标大于等于 2 的所有元素的值
# echo ${ARRAY[@]:2}
3 4 5
( 5)有时需要获得数组的长度,即数组中一共有多少个元素。这时可以使用以下形式:
#显示数组中的元素个数
# echo ${#ARRAY[@]}
5
上面这个示例命令输出的数字 5 表示数组中有 5 个元素,而非数组中的元素下标最大值。

利用数组是实现排序:

Linux编程:Shell中的变量_第4张图片

清除数组
不再使用数组时,应该清除数组,以回收这些数组占用的系统资源。与变量相同,清
除数组也使用 unset 命令。
( 1)清除数组 ARRAY 的第 1 个元素:
#使用 unset 命令清除数组中的第 1 个元素
# unset ARRAY[0]
( 2)清除整个数组:
#使用 unset 命令清除整个数组并验证
# unset ARRAY
# echo ${ARRAY[@]}

 

 

你可能感兴趣的:(linux)