Bash 初学者系列#4:在 Bash 中使用数组

[*]阵列来救援!

[*]到目前为止,您已经使用了有限数量的变量 bash 脚本,您创建了几个变量来保存一两个文件名和用户名。

[*]但是,如果您需要在您的 bash 脚本; 假设您要创建一个 bash 从用户读取一百个不同输入的脚本,你要创建 100 个变量吗?

[*]幸运的是,您不需要这样做,因为数组提供了更好的解决方案。

在 a 中创建您的第一个数组 bash 脚本

[*]假设您要创建一个 bash 脚本 时间戳.sh 更新五个不同文件的时间戳。

[*]首先,使用使用五个不同变量的简单方法:

#!/bin/bash

file1="f1.txt"
file2="f2.txt"
file3="f3.txt"
file4="f4.txt"
file5="f5.txt"

touch $file1
touch $file2
touch $file3
touch $file4
touch $file5

[*]现在,不是使用五个变量来存储五个文件名的值,而是创建一个包含所有文件名的数组,这里是数组的一般语法 bash:

array_name=(value1 value2 value3 … )

[*]所以现在你可以创建一个名为 files 的数组来存储你在 时间戳.sh 脚本如下:

files=("f1.txt" "f2.txt" "f3.txt" "f4.txt" "f5.txt")

[*]如您所见,这更加简洁和高效,因为您只用一个数组替换了五个变量!

访问数组元素 bash

[*]数组的第一个元素从索引开始 0 因此要访问数组的第 n 个元素,请使用 n -1 指数。

[*]为了 example要打印 files 数组的第二个元素的值,可以使用以下 echo 语句:

echo ${files[1]}

[*]并打印文件数组的第三个元素的值,您可以使用:

echo ${files[2]}

[*]等等。

[*]以下 bash 脚本 反向.sh 将以相反的顺序打印出文件数组中的所有五个值,从最后一个数组元素开始:

#!/bin/bash

files=("f1.txt" "f2.txt" "f3.txt" "f4.txt" "f5.txt")

echo ${files[4]}
echo ${files[3]}
echo ${files[2]}
echo ${files[1]}
echo ${files[0]}

[*]我知道你可能想知道为什么有这么多的 echo 语句,为什么我不在这里使用循环。 这是因为 我打算介绍 bash 本系列后面的循环概念.

[*]您还可以一次打印出所有数组元素:

echo ${files[*]}

f1.txt f2.txt f3.txt f4.txt f5.txt

[*]您可以打印文件数组元素的总数,即 数组的大小

echo ${#files[@]}

5

[*]您还可以更新数组中任何元素的值; 为了 example,您可以使用以下赋值将 files 数组的第一个元素的值更改为“a.txt”:

files[0]="a.txt"

添加数组元素 bash

[*]让我们创建一个包含流行 Linux 发行版名称的数组:

distros=("Ubuntu" "Red Hat" "Fedora")

[*]distros 数组当前包含三个元素。 您可以使用 += 运算符将元素添加(附加)到数组的末尾。

[*]为了 example,您可以将 Kali 附加到 distros 数组,如下所示:

distros+=("Kali")

[*]现在 distros 数组正好包含四个数组元素,而 Kali 是数组的最后一个元素。

删除数组元素 bash

[*]让我们首先创建一个 num 数组来存储从 1 到 5 的数字:

num=(1 2 3 4 5)

[*]您可以打印 num 数组中的所有值:

echo ${num[*]}

1 2 3 4 5

[*]您可以使用删除 num 数组的第三个元素 unset 内置外壳:

unset num[2]

[*]现在,如果您打印 num 数组的所有值:

echo ${num[*]}
1 2 4 5

[*]如您所见,数组 num 的第三个元素已被删除。

[*]你也可以用同样的方法删除整个 num 数组:

unset num
删除数组元素 bash 外壳脚本

创建具有不同数据类型的混合数组

[*]在 bash,与许多其他编程语言不同,您可以创建一个包含不同数据类型的数组。 看看以下 用户.sh bash 脚本:

#!/bin/bash

user=("john" 122 "sudo,developers" "bash")

echo "User Name: ${user[0]}"
echo "User ID: ${user[1]}"
echo "User Groups: ${user[2]}"
echo "User Shell: ${user[3]}"

[*]请注意,用户数组包含四个元素:

  1. “约翰”—->字符串数据类型
  2. 122 —> 整数数据类型
  3. “sudo,developers” —> 字符串数据类型
  4. “bash” —> 字符串数据类型

[*]因此,将不同的数据类型存储到同一个数组中是完全可以的。 那不是很棒吗?

数组在 bash 外壳脚本

[*]这将带我们到本教程的结尾; 我希望你喜欢它! 如果你想要更复杂、更真实的东西 example,检查如何拆分字符串 bash 使用数组。

[*]当然,您可以通过解决问题来练习刚刚学到的知识,如果遇到困难或需要提示,请参考他们的解决方案。

Bash 第 4 章练习题 练习 Bash 数组的问题及其解决方案 Bash-Chapter-4-Practice-Questions-Linux-Handbook.pdf 29 KB

下载圈

[*]

[*]在下一章中,我将向您展示如何使用各种 bash 算术运算符。

正在加载…