持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第9天,点击查看活动详情
Hi~,我是一碗周,如果写的文章有幸可以得到你的青睐,万分有幸~
🍇 写在前面
先来介绍一下新开的这个专栏:《前端&运维那点事儿》将会从前端的角度,依次学习Linux→Nginx→Docker→持续集成→k8s,从而打造一个属于站在前端角度的运维专栏。
这篇文章是Shell篇的第四篇文章,在这篇文章中将来介绍一下declare
命令、算术运算以及数组的相关内容。
🥝 declare命令
在开始之前,我们前补充一个命令,就是declare
命令,该命令的作用是用来定义变量。
该命令的语法如下:
declare [+/-] [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] 。 |
示例代码如下:
[root@ywanzhou ~]$ declare -i num=10+20 # 将 num 设置为整数类型的变量
[root@ywanzhou ~]$ echo $num # 输出两个数相加的和
30
[root@ywanzhou ~]$ num=10+50
[root@ywanzhou ~]$ echo $num
60
[root@ywanzhou ~]$ declare +i num # 删除整型属性
[root@ywanzhou ~]$ num=10+20 # 输出字符串拼接
[root@ywanzhou ~]$ echo $num
10+20
🍍 算术运算
在Shell中要进行算数运算,语法格式如下:
$((expression)) # expression 为算术表达式
Shell同其他编程语言一样,Shell也具有很多算术运算符,如下表所示
算术运算符 | 说明/含义 |
---|---|
+ 、- | 加法(或正号)、减法(或负号) |
* 、/ 、% 、** | 乘法、除法、取余、幂运算 |
++ 、-- | 自增和自减,可以放在变量的前面也可以放在变量的后面,两者的区别同JS。 |
! 、&& 、丨丨 、 | 逻辑非(取反)、逻辑与(and)、逻辑或(or) |
< 、<= 、> 、>= 、== 、!= 、= | 比较符号 |
<< 、>> | 向左移位、向右移位 |
~ 、丨 、 & 、^ | 按位取反、按位或、按位与、按位异或 |
= 、+= 、-= 、*= 、/= 、%= | 赋值运算符 |
示例代码如下:
[root@ywanzhou ~]$ n1=100
[root@ywanzhou ~]$ n2=10
[root@ywanzhou ~]$ echo $((n1+n2)) # 计算两个的和
110
[root@ywanzhou ~]$ echo $((n1--)) # 自减 先返回再减
100
[root@ywanzhou ~]$ echo $n1
99
[root@ywanzhou ~]$ echo $((++n2)) # 自增 先增在返回
11
🍐 数组
🍓 数组的定义与修改
在Shell中还可以定义数组,语法有两种:
第一种直接使用索引的方式定义,示例如下:
[root@ywanzhou ~]$ arr[0]=100
[root@ywanzhou ~]$ arr[1]=一碗周
[root@ywanzhou ~]$ arr[2]=https://github.com/ywanzhou
[root@ywanzhou ~]$ echo ${arr[0]} ${arr[1]} ${arr[2]}
100 一碗周 https://github.com/ywanzhou
使用索引定义也可以使用索引访问。
第二种就是使用括号()
来表示数组,数组元素之间用空格来分隔。示例如下:
[root@ywanzhou ~]$ arr2=(100 一碗周 https://github.com/ywanzhou)
[root@ywanzhou ~]$ echo ${arr2[0]} ${arr2[1]} ${arr2[2]}
100 一碗周 https://github.com/ywanzhou
如果想要访问数组中的所有元素可以使用@
或者*
,示例如下:
[root@ywanzhou ~]$ echo ${arr2[*]}
100 一碗周 https://github.com/ywanzhou
[root@ywanzhou ~]$ echo ${arr2[@]}
100 一碗周 https://github.com/ywanzhou
下面展示了如何合并数组以及获取数组的长度:
[root@ywanzhou ~]$ array1=(一碗周 github)
[root@ywanzhou ~]$ array2=(地址 https://github.com/ywanzhou)
[root@ywanzhou ~]$ array3=(${array1[*]} ${array2[@]}) # 合并数组
[root@ywanzhou ~]$ echo ${array3[@]}
一碗周 github 地址 https://github.com/ywanzhou
[root@ywanzhou ~]$ echo ${#array3[@]} # 获取数组长度
4
🍒 数组的删除
删除数组或者删除数组的元素直接使用unset
命令即可,如下所示:
[root@ywanzhou ~]$ unset array1[0] # 删除数组中索引为1的元素
[root@ywanzhou ~]$ echo ${array1[*]} # 验证是否删除成功
github
[root@ywanzhou ~]$ echo ${array2[*]}
地址 https://github.com/ywanzhou
[root@ywanzhou ~]$ unset array2 # 删除数组中索引为1的元素
[root@ywanzhou ~]$ echo ${array2[*]} # 删除打印内容为空
🍑 写在最后
本篇文章到这就结束了,这篇文章中介绍了Linux中的declare
命令、Shell中如何进行算数运算以及Shell中的数组。
如果对本篇文章对你有所帮助,可以点赞收藏评论支持一下我;如果有所疑问,欢迎私信~