1 | unset
|
2 | ===
|
3 |
|
4 | 删除指定的shell变量或函数。
|
5 |
|
6 | ## 概要
|
7 |
|
8 | ```shell
|
9 | unset [-f] [-v] [-n] [name ...]
|
10 | ```
|
11 |
|
12 | ## 主要用途
|
13 |
|
14 | - 删除一到多个shell变量(不包括只读变量)。
|
15 | - 删除一到多个shell函数。
|
16 | - 删除一到多个具有引用属性的变量(如果-n选项存在)。
|
17 |
|
18 | ## 选项
|
19 |
|
20 | ```shell
|
21 | -f:仅删除函数。
|
22 | -v:仅删除变量(不包括只读变量)。
|
23 | -n:删除具有引用属性的变量名(如果该选项存在)。
|
24 | ```
|
25 |
|
26 | ## 参数
|
27 |
|
28 | name(可选):要删除的变量或函数。
|
29 |
|
30 | ## 返回值
|
31 |
|
32 | 返回成功除非选项错误或要删除的变量或函数有只读属性。
|
33 |
|
34 | ## 例子
|
35 |
|
36 | ```shell
|
37 | # 删除变量。
|
38 | declare paper_size='B5'
|
39 | unset -v paper_size
|
40 | ```
|
41 | ```shell
|
42 | # 删除函数。
|
43 | function show_result(){ echo 'Last Command Return: $?'; }
|
44 | unset -f show_result
|
45 | ```
|
46 | ```shell
|
47 | # 当不指定选项时,优先删除变量,如果失败则删除函数。
|
48 | declare -i aa=100
|
49 | function aa(){ echo 'aa'; }
|
50 | unset aa
|
51 | # 变量'aa'已被删除。
|
52 | declare -p aa
|
53 | # 函数'aa'存在。
|
54 | declare -F|grep aa
|
55 | ```
|
56 | ```shell
|
57 | # 演示unset使用-n选项,name指定了引用变量时的情况。
|
58 | declare a=3
|
59 | # 定义引用变量
|
60 | declare -n b=a
|
61 | # 查看属性,显示declare -n b="a"
|
62 | declare -p b
|
63 | # 显示3
|
64 | echo ${b}
|
65 | # 显示a
|
66 | echo ${!b}
|
67 | # 指定-n选项时
|
68 | unset -n b
|
69 | # 引用变量b已被删除
|
70 | declare -p b
|
71 | # 被引用的变量a未被删除
|
72 | declare -p a
|
73 | ```
|
74 |
|
75 | ```shell
|
76 | # 演示unset不使用-n选项,name指定了引用变量时的情况。
|
77 | declare a=3
|
78 | # 定义引用变量
|
79 | declare -n b=a
|
80 | # 查看属性,显示declare -n b="a"
|
81 | declare -p b
|
82 | # 显示3
|
83 | echo ${b}
|
84 | # 显示a
|
85 | echo ${!b}
|
86 | # 不指定-n选项时
|
87 | unset b
|
88 | # 引用变量b未被删除,显示declare -n b="a"
|
89 | declare -p b
|
90 | # 被引用的变量a被删除
|
91 | declare -p a
|
92 | ```
|
93 |
|
94 | ### 注意
|
95 |
|
96 | 1. 该命令是bash内建命令,相关的帮助信息请查看`help`命令。
|
97 |
|
98 |
|
99 |
|