目录

一、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) 定义永久变量---写在配置文件中,就是永久变量