变量类型
变量一旦设置了类型,那么该变量的存储格式、存储空间大小和可参与的运算、以及运行机制就已被限定(不一样)了。基本的变量类型主要有:
字符型变量
-
数值型变量
- 整型
- 浮点型
不同的编程语言对类型的要求是不一样的,包括:
强类型语言: 定义变量时必须指定变量类型,从而决定了该变量的存储格式、存储空间大小和可参与的运算、以及运行机制,调用未声明的变量会报错
弱类型语言: 定义变量时无需指定变量类型,默认尾字符类型。参与运算时会自动进行类型转换。
bash中的变量
根据变量的生效范围分为:
- 本地变量: 仅仅对当前shell 有效,其他shell或是父子shell均无效
- 环境变量: 当前shell及其子shell均有效
- 局部变量: 仅仅对shell进程的某个代码片段中
- 位置变量: 用于通过命令行向脚本代码传递参数的变量
- 特殊变量: $@,$#,$0, 有特殊用法,没有生效范围
本地变量
变量声明|赋值:
variableName = variableValue
变量值可以值字面量或是命令结果引用,例如:
(1) 字面量赋值 a = "abc"
(2) 引用其他变量 b = ${a}
(3) 命令结果引用 c = $(ls -l) / c = `ls -l`
变量引用:$variavleName/${variavleName} 如果变量含在一个单词中必须使用{}界定
弱引用: "" 变量名会被替换未变量值
强引用: '' 变量名不会被替换未变量值,保持原样
查看所有已经声明的变量: set
** 只读变量
只读变量的值不能被修改和销毁,直到shell进程终止
readonly variableName=variableValue
declare -r name=variableValue
环境变量
变量声明|赋值:
export variableName = variableValue
或者 declare -x variableName = variableValue
变量引用:
$variavleName/${variavleName}
显示所有环境变量:
export
env
printenv
销毁环境变量: unset envVariableName
bash内建环境变量: PATH SHELL UID HISTORY HOME PWD OLD HISTFILE PS1
位置变量
可以在脚本中获取到通过命令行传入的参数值
$1,$2,$3...$n 对应第1\2\3..\n个参数
可以使用shift 来向左溢出参数
$0: 命令本身
$*: 传递给脚本的所有参数,把有参数当做一个字符串
$@: 传递给脚本的所有参数
$#: 传递给脚本的参数个数
变量命名规则:
(1) 不能使用程序的保留字
(2) 不能使用数字、字母、下划线,不能以数字开头
(3) 容易理解,见名知意
销毁变量: unset variableName