1. shell变量的定义
1)Shell 支持以下三种定义变量的方式:
variable=value
variable='value'
variable="value"
特点
1. shell 在默认情况下不会区分变量类型,即使你将整数和小数赋值给变量,它们也会被视为字符串,如果 value 不包含任何空白符(例如空格、Tab 缩进等),那么可以不使用引号,也可以使用 declare 关键字显式定义变量的类型
2. 赋值号=
的周围不能有空格
3. 使用一个定义过的变量,只要在变量名前面加美元符号$,变量名外面的花括号
{ }
是可选的,加不加都行,加花括号是为了帮助解释器识别变量的边界
4. 命名规则同其他语言类似
- 变量名由数字、字母、下划线组成;
- 必须以字母或者下划线开头;
- 不能使用 Shell 里的关键字(通过 help 命令可以查看保留关键字)。
5. 单引号和双引号的区别
- 以单引号
' '
包围变量的值时,单引号里面是什么就输出什么,即使内容中有变量和命令(命令需要反引起来)也会把它们原样输出。这种方式比较适合定义显示纯字符串的情况 - 以双引号
" "
包围变量的值时,输出时会先解析里面的变量和命令,而不是把双引号中的变量名和命令原样输出。这种方式比较适合字符串中附带有变量和命令并且想将其解析后再输出的变量定义。
2. 变量赋值
variable=`command` #使用反引号` `包裹变量
variable=$(command) #$()符号包裹变量
3. 只读变量
readonly var #关键字readonly
4. 删除变量
unset variable_name #变量被删除后不能再次使用;unset 命令不能删除只读变量。
5. Shell变量的作用域
1)Shell 变量的作用域可以分为三种:
- 有的变量可以在当前 Shell 会话中使用,这叫做全局变量(global variable),只要是同一个shell窗口都是生效的,无论几个shell脚本文件。变量默认为全局变量。
- 有的变量只能在函数内部使用,这叫做局部变量(local variable);使用local关键字。
- 而有的变量还可以在其它 Shell 中使用,这叫做环境变量(environment variable)。当使用export关键字后 export a ,变量会在子shell中生效,默认不生效