变量的基本解释
变量就是存储空间的内容引用到需要使用的地方,变量名存储就是内存中资源对应的某个地址。
变量赋值:NAME=VALUE
>把VALUE存储到NAME指向的内存空间中;
变量为什么有类型?
- :存储空间、存储格式、参与的运算、……
- 类型不同决定对数据的处理方式不同
变量命名:只能使用字母、数字和下划线;而且不能以数字开头;
- 变量名:见名知义;不能使用程序保留字,例如if、case、then、fi、esac、for、while、until、break、continue等等;
- 变量引用
- :NAME,NAME
- 变量替换:把变量引用符号出现的位置替换为其指向的内存空间中的数据;
bash变量种类:
- 本地变量:作用域为当前shell进程;不包括其子进程;
- set 变量名=值
- 环境变量:使用域为当前shell进程及其子进程;
- 注意:bash内嵌了许多环境变量,名称为全大写字母,例如UID、HOME、PWD、SHELL, PATH, HISTSIZE等等;
- 环境变量查看:
- export, declare -x
- env, printenv
- 撤销环境变量:
- unset NAME
局部变量
- 作用域:当前代码块
- local 变量名=值
- 作用域:当前代码块
位置参数变量:
在命令行地方输入脚本参数,第一个参数对应脚本变量$1,第二个对应$2依次自动对应
- 特殊变量
保持某些特殊数据
$? 上一个命令执行状态返回值
$# 参数的个数
$* 参数列表,引用所有的位置参数
$@ 参数列表,引用所有的位置参数
$0 命令本身 脚本本身
- 本地变量:
变量赋值:NAME=VALUE
查看变量:set
撤销变量:unset NAME
注意:此处非为变量引用,因此不能使用$;
所有的本地变量在shell进程终止时,会被自动撤销;
只读变量:常量
- (1) declare -r NAME
- (2) readonly NAME
变量声明和赋值:
- declare -x NAME[=VALUE]
- export NAME[=VALUE]
不支持重新赋值,也不支持撤销操作;
# declare -r username=`whoami`
# echo $username
root
# unset username
-bash: unset: username: cannot unset: readonly variable