diff --git a/command/unset.md b/command/unset.md index 9d71405526..48e27d515b 100644 --- a/command/unset.md +++ b/command/unset.md @@ -1,38 +1,99 @@ unset === -删除指定的shell变量或函数 +删除指定的shell变量或函数。 -## 补充说明 - -**unset命令** 用于删除已定义的shell变量(包括环境变量)和shell函数。unset命令不能够删除具有只读属性的shell变量和环境变量。 - -### 语法 +## 概要 ```shell -unset(选项)(参数) +unset [-f] [-v] [-n] [name ...] ``` -### 选项 +## 主要用途 + +- 删除一到多个shell变量(不包括只读变量)。 +- 删除一到多个shell函数。 +- 删除一到多个具有引用属性的变量(如果-n选项存在)。 + +## 选项 ```shell --f:仅删除函数; --v:仅删除变量。 +-f:仅删除函数。 +-v:仅删除变量(不包括只读变量)。 +-n:删除具有引用属性的变量名(如果该选项存在)。 ``` -### 参数 +## 参数 -shell变量或函数:指定要删除的shell变量或shell函数。 +name(可选):要删除的变量或函数。 -### 实例 +## 返回值 -使用unset命令将前面所创建的环境变量mylove及其对应的值进行删除,输入如下命令: +返回成功除非选项错误或要删除的变量或函数有只读属性。 + +## 例子 ```shell -unset -v mylove #删除指定的环境变量 +# 删除变量。 +declare paper_size='B5' +unset -v paper_size +``` +```shell +# 删除函数。 +function show_result(){ echo 'Last Command Return: $?'; } +unset -f show_result +``` +```shell +# 当不指定选项时,优先删除变量,如果失败则删除函数。 +declare -i aa=100 +function aa(){ echo 'aa'; } +unset aa +# 变量'aa'已被删除。 +declare -p aa +# 函数'aa'存在。 +declare -F|grep aa +``` +```shell +# 演示unset使用-n选项,name指定了引用变量时的情况。 +declare a=3 +# 定义引用变量 +declare -n b=a +# 查看属性,显示declare -n b="a" +declare -p b +# 显示3 +echo ${b} +# 显示a +echo ${!b} +# 指定-n选项时 +unset -n b +# 引用变量b已被删除 +declare -p b +# 被引用的变量a未被删除 +declare -p a ``` -执行以上命令后,系统将删除指定的环境变量。用户可以使用env命令和grep命令对其进行查询。已经删除的环境变量再次使用指令查询时,将出现查询不到指定环境变量的输出信息。 +```shell +# 演示unset不使用-n选项,name指定了引用变量时的情况。 +declare a=3 +# 定义引用变量 +declare -n b=a +# 查看属性,显示declare -n b="a" +declare -p b +# 显示3 +echo ${b} +# 显示a +echo ${!b} +# 不指定-n选项时 +unset b +# 引用变量b未被删除,显示declare -n b="a" +declare -p b +# 被引用的变量a被删除 +declare -p a +``` + +### 注意 + +1. 该命令是bash内建命令,相关的帮助信息请查看`help`命令。 - \ No newline at end of file +