SHELL 变量

SHELL 变量

1. SHELL变量综述

SHELL 是动态语言类型和弱类型语言,变量在使用之前不用显示定义。SHELL的变量不分数据类型,统一按字符串存储。但是根据上下文环境,允许执行不同的操作。

2. SHELL变量定义

declare attribute variable 可用于显示定义变量的类型

-i 定义为整型,之后就可以直接对表达式求值,结果只能为整数,如果求值失败或不是整数,就设置为0.

-r 定义为只读变量,之后变量不可以修改,不可以删除。

3. SHELL变量数据类型

SHELL不支持浮点数

SHELL 实际上只有2种数据类型,字符串与整数,默认是字符串类型。

4. 引号

4.1 单引号

单引号括起来的字符当做普通字符出现;

4.2 双引号

双引号括起来的字符当做普通字符出现,如下四个字符除外:

美元符号: $

反斜线:

单引号: ‘ 

双引号: “

4.3 反引号 `

反引号括起来的字符串被SHELL解释为命令,在执行时,SHELL首先执行该命令,并以它的输出结果取代整个反引号。

5. 变量的作用域

5.1 全局变量:

变量默认是全局变量;

在脚本中定义的变量是全局变量,其作用域为从被定义的地方开始,直到SHELL脚本结束或变量被显示删除。

在函数中定义的变量是全局变量,其作用域为从函数被调用时执行变量定义的地方开始,直到SHELL脚本结束或变量被显示删除。

5.2 局部变量

局部变量需要显示定义,如在函数内部可通过 local v=200 来定义局部变量,其作用域为从定义的地方开始直到函数结束或是被显示删除

5.3 变量覆盖

当函数内部出现与函数外部同名的局部变量时;函数内部的局部变量会屏蔽函数外部的同名全局变量。

6. 系统变量

主要是对参数的判断和命令返回值判断时使用。

变量

说明

$n

n表示参数的位置,如$1表示第一个参数,$2表示第二参数.......

$#

命令行参数的个数

$0

当前SHELL脚本的名称

$?

前一个命令或邯郸的返回代码,0表示成功

$*

所有参数以空格分割的字符串,如: 参数1 参数2 参数3 ......

$@

所有参数以空格分割的字符串,如: “参数1” “参数2” “参数3......

$$

返回本程序的进程ID (PID)

7. 环境变量

环境变量是所有SHELL程序都可以使用的变量。如:

PATH,HOME,IFS,PWD,SHELL等。

set 命令可以列出所有的环境变量。

8. 变量赋值与清空

SHELL中变量是不需要专门的定义与初始化的,未定义的变量与未初始化的变量默认是一个空字符串。

variable=value

注意:

赋值号=两边不能有空格,否则SHELL会将其视为命令

value 中如果包含空格、制表符、换行符,则必须用单引号或双引号括起来;并且双引号内允许变量替换,单引号内部允许变量替换。

变量引用用$

${var}

清除变量

unset var_name

9. 引用于替换

所谓引用,是指把字符串用引用符号包括起来,以防止其中的特殊字符被SHELL解释为其它含义。

引用符合

说明

双引号

除美元符合、反引号、单引号和反斜线以为,其它所有字符保持字面含义

单引号

所有字符保持字面含义

反引号

反引号中的字符串被解释为SHELL命令执行

反斜线

转义字符

9.1 全引用

既字符串被单引号括起来

9.2 部分引用

既字符串被双引号括起来

9.3 命令替换

指在SHELL中,把某个SHELL命令的执行结果赋给某个变量,在SHELL中,有两种方法可以进行命令替换,这两种方法是等价的:

用反引号: `shell_command`

用圆括号: $(shell_command)

原文地址:https://www.cnblogs.com/ordili/p/9445916.html