#Bash 的 unset 命令
unset [OPTION]... [NAME]...
功能
删除变量。
类型
Bash 内置命令。
参数
OPTION选项:-f- 只删除函数-v- 只删除普通变量-n- 只删除引用
NAME- 要删除的变量名称列表
#示例
删除变量和函数
Bash 中可以有同名的普通变量和函数,使用
unset删除时默认删除第一个;可以使用-f或-v指定删除哪个。
$ NAME=primers # 定义普通变量
$ NAME() { echo primers; } # 定义同名的函数
$ echo $NAME # 查看变量
primers
$ NAME # 调用函数
primers
$ unset NAME # 默认删除第一个,可以用 `-f` 或 `-v` 指定删除哪个
$ echo $NAME # 变量没了
$ NAME # 函数还在
hello
删除引用
使用
unset删除引用变量时,默认删除的是源变量,而不是引用变量;使用-n选项时则删除引用。
$ real_var="primers" # 定义普通变量
$ declare -n ref_var=real_var # 定义引用变量
$ echo $ref_var # 查看引用变量
primers
$ unset ref_var # 默认会删除被引用的 real_var
$ echo $real_var # 源变量没了
$ echo $ref_var # rev_var 引用 real_var 也没有值
$ real_var="primers" # 重新创建 real_var
$ echo $ref_var # ref_var 仍然引用 real_var
primers
$ unset -n ref_var # 删除引用
$ echo $ref_var # 查看引用
$ echo $real_var # 源变量还在
primers
#相关命令
| 命令 | 说明 |
|---|---|
| declare | 定义变量和函数 |
#手册
unset: unset [-f] [-v] [-n] [name ...]
Unset values and attributes of shell variables and functions.
For each NAME, remove the corresponding variable or function.
Options:
-f treat each NAME as a shell function
-v treat each NAME as a shell variable
-n treat each NAME as a name reference and unset the variable itself
rather than the variable it references
Without options, unset first tries to unset a variable, and if that fails,
tries to unset a function.
Some variables cannot be unset; also see `readonly'.
Exit Status:
Returns success unless an invalid option is given or a NAME is read-only.