在前面的文章中,我们介绍了如何在 bash 中使用有限数量的变量,比如要保存一个或两个文件名或用户名。
但是,如果在 bash 脚本中需要多个变量,该怎么办?假设我们要创建一个 bash 脚本,从用户那里读取 100 个不同的输入,那么需要创建 100 个变量吗?
肯定不是这样,我们需要使用数组。
在 bash 脚本中创建第一个数组
假设我们要创建一个名为 timestamp.sh 的脚本,用来更新 5 个不同文件的时间戳。
第一种使用比较原始的方法,创建 5 个不同的变量,如下所示:
可以看到这种方法写起来比较繁琐,我们还可以使用另一种方法,创建一个包含所有文件名的数组,如下语法:
这种比较简洁,所以我们采用数组的方法,如下:
访问bash中的数组元素
与大多数编程语言中一样,数组中的元素索引是从 0 开始的,所以要访问数组中第 n 个元素,其下标索引应该是 [n - 1]。
比如,要打印数组中的第 2 个元素,可以参考如下方式:
以下 bash 脚本 reverse.sh,将倒序打印数组中的 5 个元素:
使用过 bash 的朋友可能会觉得奇怪,为什么我这里用这么多 echo 命令,而不是使用循环。我是想稍后在介绍 bash 中循环的使用。
也可以一次打印出所有数组元素:
可以打印数组元素的总数,也就是数组的大小:
数组中元素的值是可以更改的。比如,我们可以用如下方式将数组中第一个元素的值改为 a.txt:
向数组中添加元素
我们首先创建一个包含 Linux 版本名称的数组:
上述数组中包含三个元素。可以使用 += 运算符将元素添加(追加)到数组的末尾,如下所示:
现在,数组中已经有了 4 个元素,Kali 是最后一个:
删除数组中的元素
我们首先创建一个包含 5 个数字的数组,其名称为 num:
可以打印一下数组中的元素:
我们可以使用 shell 内置功能 unset 来删除 数组中的第 3 个元素:
现在,我们再来打印一下 num 数组中的元素:
上面结果可以看到,第三个元素已经被删除。
也可以使用同样的方法删除数组中所有的元素:
创建具有不同数据类型的混合数组
与其他编程语言不同,在 bash 中,可以创建包含不同数据类型的数组,如下 user.sh 所示:
上述脚本中的数组包含有四个元素,其中第二个元素为整型数据类型,其余三个元素为字符串。
以上就是本次分享全部内容,欢迎讨论。