6-x3 declare和typeset命令:设置变量属性
declare 和 typeset 都是 Shell 内建命令,它们的用法相同,都用来设置变量的属性。不过 typeset 已经被弃用了,建议使用 declare 代替。
declare 命令的用法如下所示:declare [+/-] [aAfFgilprtux] [变量名=变量值]
其中,-表示设置属性,+表示取消属性,aAfFgilprtux都是具体的选项,它们的含义如下表所示:
|
选项
|
含义
|
|---|---|
| -f [name] | 列出之前由用户在脚本中定义的函数名称和函数体。 |
| -F [name] | 仅列出自定义函数名称。 |
| -g name | 在 Shell 函数内部创建全局变量。 |
| -p [name] | 显示指定变量的属性和值。 |
| -a name | 声明变量为普通数组。 |
| -A name | 声明变量为关联数组(支持索引下标为字符串)。 |
| -i name | 将变量定义为整数型。 |
| -r name[=value] | 将变量定义为只读(不可修改和删除),等价于 readonly name。 |
| -x name[=value] | 将变量设置为环境变量,等价于 export name[=value]。 |
|
|
举栗
|
知识点
|
|||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| -i 将变量定义为整数型 |
|
||||||||||||||||
|
-r 将变量定义为只读 (不可修改和删除) |
declare -r n=10 echo $n———>10 n=30———>报错 -bash: m: 只读变量 |
普通变量可以通过unset删除,但是只读变量不可修改不可删除 | |||||||||||||||
| -p 显示指定变量的属性和值 |
roaddb@standalone:~$ declare -r r=10 roaddb@standalone:~$ declare -p r declare -r r="10" roaddb@standalone:~$ a=5 roaddb@standalone:~$ declare -p a declare -- a="5" |
||||||||||||||||
| -x 将变量设置为环境变量 |
roaddb@standalone:~$ export env_var=test1 roaddb@standalone:~$ declare -x env_var2=test2 roaddb@standalone:~$ env|grep env_var* env_var2=test2 env_var=test1 roaddb@standalone:~$ declare -p env_var2 declare -x env_var2="test2" roaddb@standalone:~$ declare -p env_var declare -x env_var="test1" |
1.使用export或 declare -x可以设置环境变量 2.env可以查看所有的环境变量 |
|||||||||||||||
| -f 列出之前由用户在脚本中定义的函数名称和函数体 | |||||||||||||||||
| -F 仅列出自定义函数名称 | |||||||||||||||||
| -g 在 Shell 函数内部创建全局变量 |
1.全局变量的知识点 1)在 Shell 中定义的变量,默认就是全局变量 2)全局变量的作用范围是当前的 Shell 进程,而不仅仅是当前的 Shell 脚本文件 |
||||||||||||||||
| -a 声明变量为普通数组 |
roaddb@standalone:~$ arr1=('a' 'b' 'c') roaddb@standalone:~$ echo ${arr1[*]} a b c roaddb@standalone:~$ declare -p arr1 declare -a arr1='([0]="a" [1]="b" [2]="c")' roaddb@standalone:~$ declare -a arr2=('aa' 'bb' 'cc') roaddb@standalone:~$ echo ${arr2[*]} aa bb cc roaddb@standalone:~$ declare -p arr2 declare -a arr2='([0]="aa" [1]="bb" [2]="cc")' |
使用arr1=('a' 'b' 'c')或declare -a arr2=('a' 'b' 'c')的方式创建数组,其效果是一样的 | |||||||||||||||
| -A 声明变量为关联数组(支持索引下标为字符串) |
roaddb@standalone:~$ declare -A arr3=(['aa']='bb' ['cc']='dd' ['ee']='ff') roaddb@standalone:~$ declare -p arr3 declare -A arr3='([aa]="bb" [ee]="ff" [cc]="dd" )' |
6-x3 declare和typeset命令:设置变量属性的更多相关文章
- Linux命令(6/28)——declare/typeset命令
declare 与 typeset 命令是bash的内建命令,两者是完全一样的,用来声明shell变量,设置变量的属性. declare命令(别名typeset)属shell内建命令,用于申明shel ...
- 『忘了再学』Shell基础 — 19、使用declare命令声明变量类型
目录 1.declare命令介绍 2.声明数组变量类型 3.声明变量为环境变量 4.声明只读属性 5.补充: 1.declare命令介绍 Shell中所有变量的默认类型是字符串类型,如果你需要进行特殊 ...
- readonly&&declare&&unset &&export&&env环境变量
readonly命令用于定义只读shell变量和shell函数.readonly命令的选项-p可以输出显示系统中所有定义的只读变量. 选项 -f:定义只读函数: -a:定义只读数组变量: -p:显示系 ...
- Linux set、env、declare、export显示shell变量的区别
目录 Linux中 set.env.declare.export显示shell变量的区别 1. shell局部变量 2. 用户的环境变量 显示shell变量 declare 命令 export 命令 ...
- Scala命令设置JVM参数的规则
Scala下设置JVM参数简单分析 Scala 启动shell脚本,简化后的scala REPL 启动命令大致如下所示: java -Xmx256M -Xms32M \-Xbootclasspath/ ...
- WLST 命令和变量
下列部分将详细描述 WLST 命令和变量.主题包括: WSLT 命令类别概述 浏览命令 控制命令 部署命令 诊断命令 编辑命令 信息命令 生命周期命令 节点管理器命令 树命令 W ...
- locale命令设置语言环境
locale命令设置语言环境 在Linux中通过locale来设置程序运行的不同语言环境,locale由 ANSI C提供支持.locale的命名规则为_.,如zh_CN.GBK,zh代表中文, CN ...
- KETTLE设置变量
一.kettle变量类型 kettle变量分为: 1.环境变量 通过 set variables组件设置变量,范围可以是:JVM变量.作业变量.父作业变量.根作业变量.使用时通过${var}或 %%v ...
- Linux下使用locale命令设置语言环境
locale命令设置语言环境 在Linux中通过locale来设置程序运行的不同语言环境,locale由 ANSI C提供支持.locale的命名规则为_.,如zh_CN.GBK,zh代表中文, CN ...
随机推荐
- clickhouse_各个引擎表的特点
去重表:RepalcingMergeTree 1.使用order by排序键作为判断重复数据的唯一键 2.只有在合并分区的时候才会触发删除重复数据的逻辑 3.以数据分区为单位删除重复数据.当分区合并时 ...
- mysql mysqladmin常用命令
修改root密码 mysqladmin -u root -p123456 password 'YOURNEWPASSWORD' 检查mysql是否在运行 systemctl status mariad ...
- 重新整理 .net core 实践篇————依赖注入应用之援军[四]
前言 介绍第三方依赖注入框架Autofac,看看为我们解决什么问题. 下面介绍4个点: 命名注册 属性注册 aop 注入 子容器命名 正文 为什么我们需要使用第三方框架?第三方框架为我们做了什么?第三 ...
- Java设计模式(1:软件架构设计七大原则及开闭原则详解)
前言 在日常工作中,我们使用Java语言进行业务开发的时候,或多或少的都会涉及到设计模式,而运用好设计模式对于我而言,又是一个比较大的难题.为了解决.克服这个难题,笔主特别开了这个博客来记录自己学习的 ...
- 人脸真伪验证与识别:ICCV2019论文解析
人脸真伪验证与识别:ICCV2019论文解析 Face Forensics++: Learning to Detect Manipulated Facial Images 论文链接: http://o ...
- TensorRT 7.2.1开发初步
TensorRT 7.2.1开发初步 TensorRT 7.2.1开发人员指南演示了如何使用C ++和Python API来实现最常见的深度学习层.它显示了如何采用深度学习框架构建现有模型,并使用该模 ...
- ST为飞行时间传感器增加了多目标测距
ST为飞行时间传感器增加了多目标测距 ST adds multi-object ranging to time-of-flight sensors STMicroelectronics已经扩展了其Fl ...
- 2019个嵌入式市场研究,持续的C/C++优势
2019个嵌入式市场研究,持续的C/C++优势 2019 Embedded Markets Study reflects emerging technologies, continued C/C++ ...
- WordPress安装篇(1):使用PHPStudy安装WordPress
我是"小白",既不会编程也不懂CSS能自己搭建网站吗?可以的!只要你会用鼠标,懂打字就能搭建出属于你自己的网站.要怎么样才能做到昵?让我们一起来看看如何实现的吧.在Windows环 ...
- Spring Boot WebFlux-03——WebFlux 整合 MongoDB
第03课:WebFlux 整合 MongoDB 前言 上一课的内容讲解了用 Map 数据结构内存式存储了数据,这样数据就不会持久化,本文我们用 MongoDB 来实现 WebFlux 对数据源的操作. ...