Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Linux命令(4)——declare/typeset命令(builtin)

Linux命令(4)——declare/typeset命令(builtin)

作者头像
恋喵大鲤鱼
发布于 2018-08-03 03:19:48
发布于 2018-08-03 03:19:48
1.4K00
代码可运行
举报
文章被收录于专栏:C/C++基础C/C++基础
运行总次数:0
代码可运行

1.功能简介

declare命令(别名typeset)属shell内建命令,用于申明shell变量并设置变量属性,或查看已定义的shell变量和函数。若不加上任何参数,则会显示全部的shell变量与函数(与执行set指令的效果相同)。

2.命令格式

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
declare [-aAfFilurtx] [-p] [name[=value] ...]
typeset [-aAfFilurtx] [-p] [name[=value] ...]

3.选项说明

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
-a:申明数组变量
-A:申明关联数组,可以使用字符串作为数组索引
-f:仅显示已定义的函数
-F:不显示函数定义
-i:声明整型变量
-l:将变量值的小写字母变为小写
-u:变量值的大写字母变为大写
-r:设置只读属性
-t:设置变量跟踪属性,用于跟踪函数进行调试,对于变量没有特殊意义
-x:将指定的shell变量换成环境变量
-p:显示变量定义的方式和值
+:取消变量属性,但是+a和+r无效,无法删除数组和只读属性,可以使用unset删除数组,但是unset不能删除只读变量

4.示例

(1)定义关联数组并访问。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
declare -A assArray=([lucy]=beijing [yoona]=shanghai)

#读取关联数组全部内容
echo ${assArray[*]}
#或
echo ${assArray[@]}
#输出
beijing shanghai

#读取指定索引的数组值
echo ${assArray[lucy]}
#输出:
beijing

#列出数组索引列表
echo ${!assArray[*]}
#或
echo ${!assArray[@]}
#输出
yoona lucy

(2)定义只读变量

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
declare -r name1="lvlv1"
#或
typeset -r name2="lvlv2"
#或
readonly name3="lvlv3"

Shell规定,只读变量生命周期与当前Shell脚本进程相同,且不能消除只读属性和删除只读变量,除非kill当前Shell脚本进程。

(3)使用-p选项显示变量name1和name2的定义方式和当前值。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
declare -p name1 name2 name3
#输出
declare -r name1="lvlv1"
declare -r name2="lvlv2"
declare -r name3="lvlv3"

(4)使用-x选项将shell变量转换为临时环境变量,供当前Shell会话的其他shell进程使用,退出当前Shell会话则失效。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
declare -x name1;

(5)显示所有shell环境变量。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
declare -x

(6)使用+x选项取消变量为环境变量。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
delcare +x name1

(7)申明整型变量,赋值浮点型数值将报错。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
declare -i integer=666

参考文献

[1][Shell]数组与关联数组 [2]Linux指令范例速查手册.北京:科学出版社,2008:178-183

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017年03月10日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验