目录
一、shell的变量的介绍
二、shell变量的分类
三、shell变量的管理
32位的计算机只能认识4G的内存
2的32次幂是4294967296,计算机会把内存分成0-4294967295 B个单位,4294967296/1024/1024/1024 = 4G
正文
一、shell的变量
1.变量介绍
在编程中,总有一些数据需要临时放在内存中,以待后续使用。变量名对应的value存在对应内存地址的空间里。
变量名是存的value的逻辑地址,内存地址是value的物理地址
举例:
定义变量name并赋值,name = 'zhangsan' ,value要临时存在内存中,其对应的物理地址是0x78 , ‘zhangsan'是存储在内存里的字符串数据
name就是逻辑地址, 是对人来说的;
0x78内存的物理地址,是计算机寻址的依据;
读取该变量时:
当调用name时,计算机会根据对应关系,找到物理地址,定位内存地址,读取数据并返回
二、shell变量的分类
1.本地变量
- 本地变量是用户登陆之后,开始加载到内存中,等待被使用
- 用户私用的变量,只有本地用户可以使用,保存在家目录下面的.bash_profile、.bashrc文件中
为什么有两个文件呢?
其实.bash_profile文件是调用了.bashrc文件,所以写在其中一个文件中即可。
2.全局变量
- 所有用户都可以使用,全局变量保存在/etc/profile、/etc/bashrc 文件中
- 全局变量是在用户登陆之前,将所有的全局变量加载到内存中等待被使用
3.临时变量
在终端中临时定义的变量,只作用于本终端,关闭终端后,该临时变量就没有了
4.用户自定义变量
用户自定义的变量,比如脚本中定义的变量
脚本中定义的变量,建议大写,与命令区分开来
举例:
NAME='zhangsan'
echo $NAME
三、变量的定义
1.变量定义格式
变量名=value
2.变量定义的注意事项
变量名和等号之间不能有空格,这可能和你熟悉的所有编程语言都不一样。同时,变量名的命名须遵循如下规则:
- 命名只能使用英文字母,数字和下划线,首个字符不能以数字开头。
- 中间不能有空格,可以使用下划线 _。
- 不能使用标点符号。
- 不能使用bash里的关键字(可用help命令查看保留关键字)。
- 字符串要用单引号/双引号 引起来
- shell 区分大小写
3.读取变量内容
读取变量内容符号$
读取方法: $变量名
4.取消变量 unset
1)取消临时变量
终端定义了临时变量如下,取消:
NAME='zhangsan'
unset NAME
- 变量被删除后不能再次使用。unset 命令不能删除只读变量。
2)脚本中定义了私有变量
demo_unset.sh
#!/bin/bash NAME='lisi'
echo $NAME
source demo_unset.sh 生效
sh demo_unset.sh 运行
取消NAME, unset NAME
再运行,没有NAME的值了
但是只要重启计算机,会重新加载文件,NAME值还是存在内存中的,只是临时取消了
3)定义全局变量
格式: export NAME='XXXX'
如果不加export就是局部变量,source生效后,切换用户的话还要再次source,但是用export定义全局就不需要那么麻烦了
以上在终端中都是一次性变量,系统重启会丢失。那么如何定义永久变量呢?
4) 定义永久变量---写在配置文件中,就是永久变量