【Linux学习笔记】30:declare命令(声明/取消/查看变量类型)

2023-12-09 15:09

本文主要是介绍【Linux学习笔记】30:declare命令(声明/取消/查看变量类型),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

到我的Linux笔记的29节,Tony老师的Shell变量课程学完了,从本节开始学习Shell运算符课程。

[1]总的declare声明变量类型

前面学过Shell是一个弱类型的语言,默认情况下给变量赋什么值都是字符串型,不能直接进行数值运算。declare命令可以明确进行变量类型的声明。

declare [+/-] [变换选项] 变量名

这里写图片描述

*-i声明为整形

[root@localhost ~]# aa=11
[root@localhost ~]# bb=22
[root@localhost ~]# cc=$aa+$bb
[root@localhost ~]# echo $cc
11+22
[root@localhost ~]# declare -i cc=$aa+$bb
[root@localhost ~]# echo $cc
33

可以看到上面的变量cc声明为整形了,但aa和bb仍然是数值型,即便这样也可以正确进行数值运算,这是和其它语言不同的。

*-p查看类型

[root@localhost ~]# declare -p cc
declare -i cc="33"
[root@localhost ~]# declare -p aa
declare -- aa="11"

[2]声明数组变量

数组在Shell编程中用的不多,Shell编程中基本不用考虑效率,多数时候就是给管理员一个人用的,往往实现功能优先。

[root@localhost ~]# ary[0]=a0
[root@localhost ~]# ary[1]=a1
[root@localhost ~]# declare -a ary[2]=a2
[root@localhost ~]# ary[3]=a3

在Shell中只要用了下标,可以不用写declare -a声明,上面四条都是成功的。

[3]查看数组

和查看普通变量的方式有所不同,需要用大括号将变量括起来。
使用明确下标:

[root@localhost ~]# echo ${ary[1]}
a1

不使用下标,相当于下标为0:

[root@localhost ~]# echo ${ary}
a0

查看数组中所有元素:

[root@localhost ~]# echo ${ary[*]}
a0 a1 a2 a3

数组中的元素没有被单独保存成一个变量:

[root@localhost ~]# declare -p ary[3]
-bash: declare: ary[3]: not found
[root@localhost ~]# declare -p ary
declare -a ary='([0]="a0" [1]="a1" [2]="a2" [3]="a3")'

而是可以用-p去查看整个数组(不加下标)。

[4]声明环境变量

之前学习过用export去声明环境变量:

export 变量名=变量值

这只是简化命令,它实际上就是:

declare -x 变量名=变量值

如把aa转成环境变量并测试:

[root@localhost ~]# declare -p aa
declare -- aa="11"
[root@localhost ~]# export aa
[root@localhost ~]# declare -p aa
declare -x aa="11"

[5]声明变量只读属性(不常用)

[root@localhost ~]# declare -r aa
[root@localhost ~]# declare -p aa
declare -rx aa="11"

拥有只读属性的变量是不可以写的:

[root@localhost ~]# aa="12"
-bash: aa: readonly variable

也不可以用unset删除只读属性的变量:

[root@localhost ~]# unset aa
-bash: unset: aa: cannot unset: readonly variable

甚至也不能用+号把只读属性取消:

[root@localhost ~]# declare +r aa
-bash: declare: aa: readonly variable

也就是说一旦设置成只读,就完全不能对它操作了。好在这个变量只是临时生效的,系统一旦重启就消失了。但如果把这条命令写到环境变量配置文件中或者某个开机自动执行的文件中,它就会一直生效了,除非再去修改那个文件。

[6]-p查询变量的属性

如果后面不加具体的变量,就会查询系统中所有生效的变量的属性。
这里写图片描述

这篇关于【Linux学习笔记】30:declare命令(声明/取消/查看变量类型)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/474147

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

linux-基础知识3

打包和压缩 zip 安装zip软件包 yum -y install zip unzip 压缩打包命令: zip -q -r -d -u 压缩包文件名 目录和文件名列表 -q:不显示命令执行过程-r:递归处理,打包各级子目录和文件-u:把文件增加/替换到压缩包中-d:从压缩包中删除指定的文件 解压:unzip 压缩包名 打包文件 把压缩包从服务器下载到本地 把压缩包上传到服务器(zip

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

变量与命名

引言         在前两个课时中,我们已经了解了 Python 程序的基本结构,学习了如何正确地使用缩进来组织代码,并且知道了注释的重要性。现在我们将进一步深入到 Python 编程的核心——变量与命名。变量是我们存储数据的主要方式,而合理的命名则有助于提高代码的可读性和可维护性。 变量的概念与使用         在 Python 中,变量是一种用来存储数据值的标识符。创建变量很简单,

Linux 网络编程 --- 应用层

一、自定义协议和序列化反序列化 代码: 序列化反序列化实现网络版本计算器 二、HTTP协议 1、谈两个简单的预备知识 https://www.baidu.com/ --- 域名 --- 域名解析 --- IP地址 http的端口号为80端口,https的端口号为443 url为统一资源定位符。CSDNhttps://mp.csdn.net/mp_blog/creation/editor

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]