变量 :一段有名称的连续的内存空间,这段内存空间的名称,称为变量名;在这段内存空间中存储的数     据,则称为变量值

变量的赋值:向变量内存空间存放数据的操作,通常用“=”赋值

变量的类型:整型,字符型...(同样的数据用不同的类型表示所占内存空间不一样)

    整型:用二进制来表示数字数据(一字节由8bite组成)

    字符型:ASCLL码(一个数据由一个ASCLL码表示,一个ASCLL码占一个字节)

    字符型:UTF-8:

变量的赋值方法:VARNAME=VALUE

变量:

强变量:使用之前必须事先予以声明;必须声明变量类型

    如在C++中

int x
string y
x=12
y="12"

x是整型变量,y是字符串变量
弱变量:使用之前无需声明,也不用指明变量类型(bash变量)

bash中变量名称的命名规范:

1.变量名只能一“_”或“字母”为起始字符,后面其他字符可以是任意字母,数字,"_"

[root@localhost ~]# aa='123'
[root@localhost ~]# echo $aa
123
[root@localhost ~]# 1ace='321'
bash: 1ace=321: 未找到命令...

注意:引用变量需要在变量前加$符号
2.变量名中的字母是大小写敏感的:

3.命名的书写格式:

全大写

全小写

驼峰式:(一般单词首字母大写)

连接式:(各词组用'_'连接)

4.变量名要能做到见名之意;

5.变量名不能与已知变量或bash的内置变量重复

bash中的变量的分类:

全局变量(环境变量):作用于整个shell进程,包括其子shell

本地变量:作用范围为当前登录时所打开的shell进程,不包括其子shell

局部变量:作用范围仅仅只是当前程序段,一般用于函数

根据变量的声明方式分类:

bash内置变量

普通的内置变量:HISTSIZE……

位置参数变量:$0,$1,$2,......

特殊变量:$?,$#,$*,$@,$$.......

    自定义变量:

1.自定义变量的声明和赋值操作:

  1):声明全局变量:

export VARNAME

export VARNAME=VALUE

declare命令

格式:declare [-aAfFgilrtux] [-p] [name[=value] ...]


常用选项:

-a:声明索引数组(如果支持)

-A:声明关联数组

-i:声明整型变量

-l:声明变量并将变量中的字母转换为小写字母

-u:声明变量并将变量中的字母转换为大写字母

-r:声明只读变量;该变量技能一次赋值操作

-x:声明全局变量

declare -x VARNAME[=VALUE]、

注意:选项-l,-u,改变的是变量值而不是变量名

[root@localhost ~]# declare -u aAbC='abcdefg'
[root@localhost ~]# echo $aAbC
ABCDEFG
[root@localhost ~]# declare -x abv='454'
[root@localhost ~]# echo $abv
454
[root@localhost ~]# unset abv
[root@localhost ~]# echo $abv


[root@localhost ~]# declare -r aAbC
[root@localhost ~]# unset aAbC
-bash: unset: aAbC: 无法反设定: 只读 variable

注意:利用unset可以撤销变量名和变量值,但当变量被声明为只读变量时无法修改,所以使用unset无法删除.
 2):声明本地变量:

VARNAME=VALUE

 3):声明局部变量

local VARNEME[=VALUE]

注意:局部变量只能在函数中使用

    注意:本地变量变为全局变量,可以通过export [本地变量名] 或declare -x [本地变量名]

[root@localhost ~]# addd='123123'
[root@localhost ~]# export addd
[root@localhost ~]# sh
sh-4.2# echo $addd
123123
sh-4.2# exit
exit
[root@localhost ~]# unset addd
[root@localhost ~]# addd='45678'
[root@localhost ~]# declare -x addd
[root@localhost ~]# sh
sh-4.2# echo $addd
45678
sh-4.2#

2.查看环境变量

 set命令:

查看和改变shell属性的值和查看shell变量的变量名和变量值

            export命令:

查看变量名称,也可以为变量赋值

 env命令:类似set(显示环境变量而不显示函数)

3.查看变量的值

 echo ${VARNAME}

4.撤销变量的赋值及变量声明

 unset VARNAME

首先我们创建全局变量aaa,和局部变量bbb,并在当前shell输出

[root@localhost ~]# export aaa
[root@localhost ~]# export aaa='12345'
[root@localhost ~]# bbb='54321'
[root@localhost ~]# echo $aaa
12345
[root@localhost ~]# echo $bbb
54321

然后我们查看当前shell并切换其他shell

[root@localhost ~]# $0
bash:
[root@localhost ~]# sh
sh-4.2# echo $aaa
12345
sh-4.2# echo $bbb

sh-4.2#

可以看到全局变量可以作用于其子shell但本地变量不行。