unset

删除指定的shell变量或函数。

概要

  1. unset [-f] [-v] [-n] [name ...]

主要用途

  • 删除一到多个shell变量(不包括只读变量)。
  • 删除一到多个shell函数。
  • 删除一到多个具有引用属性的变量(如果-n选项存在)。

选项

  1. -f:仅删除函数。
  2. -v:仅删除变量(不包括只读变量)。
  3. -n:删除具有引用属性的变量名(如果该选项存在)。

参数

name(可选):要删除的变量或函数。

返回值

返回成功除非选项错误或要删除的变量或函数有只读属性。

例子

  1. # 删除变量。
  2. declare paper_size='B5'
  3. unset -v paper_size
  1. # 删除函数。
  2. function show_result(){ echo 'Last Command Return: $?'; }
  3. unset -f show_result
  1. # 当不指定选项时,优先删除变量,如果失败则删除函数。
  2. declare -i aa=100
  3. function aa(){ echo 'aa'; }
  4. unset aa
  5. # 变量'aa'已被删除。
  6. declare -p aa
  7. # 函数'aa'存在。
  8. declare -F|grep aa
  1. # 演示unset使用-n选项,name指定了引用变量时的情况。
  2. declare a=3
  3. # 定义引用变量
  4. declare -n b=a
  5. # 查看属性,显示declare -n b="a"
  6. declare -p b
  7. # 显示3
  8. echo ${b}
  9. # 显示a
  10. echo ${!b}
  11. # 指定-n选项时
  12. unset -n b
  13. # 引用变量b已被删除
  14. declare -p b
  15. # 被引用的变量a未被删除
  16. declare -p a
  1. # 演示unset不使用-n选项,name指定了引用变量时的情况。
  2. declare a=3
  3. # 定义引用变量
  4. declare -n b=a
  5. # 查看属性,显示declare -n b="a"
  6. declare -p b
  7. # 显示3
  8. echo ${b}
  9. # 显示a
  10. echo ${!b}
  11. # 不指定-n选项时
  12. unset b
  13. # 引用变量b未被删除,显示declare -n b="a"
  14. declare -p b
  15. # 被引用的变量a被删除
  16. declare -p a

注意

  1. 该命令是bash内建命令,相关的帮助信息请查看help命令。