1.功能简介

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

2.命令格式

declare [-aAfFgilrtux] [-p] [name[=value] ...]
typeset [-aAfFgilrtux] [-p] [name[=value] ...]

3.选项说明

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

4.示例

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

declare -A assArray=([lucy]=beijing [yoona]=shanghai)#读取关联数组全部内容
echo ${assArray[*]}
#或
echo ${assArray[@]}
#输出
beijing shanghai#读取指定索引的数组值
echo ${assArray[lucy]}
#输出:
beijing#列出数组索引列表
echo ${!assArray[*]}
#或
echo ${!assArray[@]}
#输出
yoona lucy

(2)定义只读变量。

declare -r name1="lvlv1"
#或
typeset -r name2="lvlv2"
#或
readonly name3="lvlv3"

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

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

declare -p name1 name2
#输出
declare -r name1="lvlv1"
declare -r name2="lvlv2"

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

declare -x name1;

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

declare -x

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

delcare +x name1

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

declare -i integer=666

参考文献

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

Linux 命令(4)—— declare/typeset 命令(builtin)相关推荐

  1. linux set命令例子,学习一个 Linux 命令:declare/typeset 命令

    原标题:学习一个 Linux 命令:declare/typeset 命令 1 功能简介 declare(别名 typeset)属 Shell 内建命令,用于申明 Shell 变量并设置变量属性,或查看 ...

  2. linux使用set给位置变量赋值,Linux命令(6/28)——declare/typeset命令

    declare 与 typeset 命令是bash的内建命令,两者是完全一样的,用来声明shell变量,设置变量的属性. declare命令(别名typeset)属shell内建命令,用于申明shel ...

  3. Linux 命令之 declare -- 声明或显示 shell 变量

    文章目录 一.命令介绍 二.命令格式 三.命令选项 四.命令示例 (一)声明变量并赋值 (二)将变量设置为环境变量 (三)将变量设置为只读,不可修改 (四)将变量声明为整数并进行计算 (五)显示变量的 ...

  4. Linux常用的50个命令

    50个最常用的Unix/Linux命令 2014-08-20 这篇文章翻译自http://www.thegeekstuff.com/2010/11/50-linux-commands/这些都是一些很常 ...

  5. Linux: 近100个常用命令大全

    1.ls [选项] [目录名 | 列出相关目录下的所有目录和文件 -a 列出包括.a开头的隐藏文件的所有文件 -A 通-a,但不列出"."和".." -l 列出 ...

  6. 97 条 Linux 运维工程师常用命令总结

    97 条 Linux 运维工程师常用命令总结 1.ls [选项] [目录名 | 列出相关目录下的所有目录和文件 -a 列出包括.a开头的隐藏文件的所有文件-A 通-a,但不列出"." ...

  7. Linux |奇怪的知识---complete命令---你不知道的命令参数补全---kubectl命令的参数补全

    前言: linux下有非常多的命令,其中有一些命令是比较冷门的,但比较有意思,比如,这个complete命令. complete命令定义命令或者脚本内的方法的参数自动补全内容是什么(例如,定义某个命令 ...

  8. 很实用的Linux 系统运维常用命令及常识(超实用)

    很实用的Linux 系统运维常用命令及常识(超实用) 作为Linux运维,需要了解Linux操作系统的基本使用和管理知识,下面脚本之家小编给大家介绍下Linux运维需要掌握的命令,想成为Linux运维 ...

  9. Linux系统运维常用命令

    Linux 系统运维常用命令 1 文件管理2 软件管理3 系统管理 4 服务管理5 网络管理6 磁盘管理 7 用户管理8 脚本相关9 服务配置 ============================ ...

最新文章

  1. php 所有魔术方法,PHP常用的魔术方法及规则
  2. ACM Fellow发文抨击「同行评审」作弊:有「门道」的作者带飞,垃圾论文也能轻松中顶会...
  3. 家用计算机来源,美计算机专家称BBS才是博客真正起源
  4. java model 封装_Java封装统一的Result Model案例
  5. 随机二次元图片API源码
  6. 【总结】Oracle sql 中的字符(串)替换与转换
  7. python selenium等待特定网页元素加载完毕
  8. 仓库无证如何处罚_法律问题 | 在船舶检查过程中,我遇到的一些问题该如何解决?...
  9. windows系统搭建redis集群
  10. 电子秤PCBA方案的功能及设计
  11. python中关于__new__和__init__的个人理解
  12. RPM和YUM软件仓库的区别
  13. 如何查看电脑本地IP+端口号
  14. yolov5m.pt triton部署
  15. 记war exploded部署不成功
  16. java file 的length_java里怎么知道一个file的大小?
  17. 广东2022年养老金计发基数为8682元,人们都能领这样多养老金吗
  18. Vim 批量在行首/行尾插入相同字符
  19. 鸟人的Android揭秘(7)——搭建Android SDK开发环境(三)
  20. 六个SEO关键词分析工具

热门文章

  1. D3可视化:(2)Bar Chart with D3js
  2. webpack4+node合并资源请求, 实现combo功能(二十三)
  3. python base64加解密
  4. 20165318 预备作业3 Linux安装及学习
  5. 爱数助力国资委实现混合IT环境下的业务保护
  6. 为什么用 Java:一个 Python 程序员告诉你
  7. http 和 https 区别?
  8. android中的屏幕单位介绍
  9. Axis2创建WebService实例
  10. 范伟导老师Sniffer课程资料