typeset 命令是 bash 的内建命令,是命令 declare 的别名,两者是完全一样的,用来声明 shell 变量,设置变量的属性。
用于申明 shell 变量并设置变量属性,或查看已定义的 shell 变量和函数。若不加上任何参数,则会显示全部的 shell 变量与函数。
选项 | 说明 |
---|---|
-a | 申明数组变量 |
-A | 申明关联数组,可以使用字符串作为数组索引 |
-f | 仅显示已定义的函数,会显示函数名称和函数体 |
-F | 仅显示函数名称,不显示函数定义 |
-i | 声明整型变量 |
-l | 将变量值的小写字母变为小写 |
-u | 变量值的大写字母变为大写 |
-r | 设置只读属性 |
-t | 设置变量跟踪属性,用于跟踪函数进行调试,对于变量没有特殊意义 |
-x | 将指定的shell变量换成环境变量 |
-p | 显示变量定义的方式和值 |
+ | 取消变量属性,但是 +a 和 +r 无效,无法删除数组和只读属性,可以使用 unset 删除数组,但是 unset 不能删除只读变量,所以设置变量为“只读”时需要慎重,因为这个不可逆的操作 |
declare -A assArray=([lucy]=beijing [yoona]=shanghai)
#读取关联数组全部内容
echo ${assArray[*]}
#或
echo ${assArray[@]}
#输出
beijing shanghai
#读取指定索引的数组元素值
echo ${assArray[lucy]}
#输出:
beijing
#列出数组索引列表
echo ${!assArray[*]}
#或
echo ${!assArray[@]}
#输出
yoona lucy