wingsummer

写在前面

  该文章根据 the unix workbench 中的 Bash Programming 进行汉化处理并作出自己的整理,并参考 Bash 脚本教程BashPitfalls 相关内容进行补充修正。一是我对 Bash 的学习记录,二是对大家学习 Bash 有更好的帮助。如对该博文有好的建议,欢迎反馈。码字不易,如果本篇文章有帮助你的,如有闲钱,可以打赏支持我的创作。如想转载,请把我的转载信息附在文章后面,并声明我的个人信息和本人博客地址即可,但必须事先通知我。本篇博文可能比较冗长,请耐心阅读和学习。

数组

内容讲解

  Bash 中的数组是有序的值列表。通过将列表指定给变量名,可以从头开始创建列表。列表是用括号(())创建的,括号中用空格分隔列表中的每个元素。让我们列出几个动物的数组:

animals=(cat dog butterfly fish bird goose cow chick goat pig)

  要检索数组,需要使用参数展开,其中包括美元符号和花括号${}。数组中元素的位置从零开始编号。要获取此数组的第一个元素,请使用${animals[0]},如下所示:

wingsummer@wingsummer-PC ~ → echo ${animals[0]}
cat

  请注意,第一个元素的索引为0。可以通过这种方式获取任意元素,例如第四个元素:

wingsummer@wingsummer-PC ~ → echo ${animals[3]}
fish

  要获得改动物列表的所有元素,请在方括号之间使用星号*

wingsummer@wingsummer-PC ~ → echo ${animals[*]}
cat dog butterfly fish bird goose cow chick goat pig

  还可以通过使用方括号指定其索引来更改数组中的单个元素:

wingsummer@wingsummer-PC ~ → echo ${animals[*]}
cat dog butterfly fish bird goose cow chick goat pig
wingsummer@wingsummer-PC ~ → animals[4]=ant
wingsummer@wingsummer-PC ~ → echo ${animals[*]}
cat dog butterfly fish ant goose cow chick goat pig

  要仅获取数组的一部分,必须指定要从中开始的索引,后跟要从数组中检索的元素数,以冒号分隔:

wingsummer@wingsummer-PC ~ → echo ${animals[*]:5:3}
goose cow chick

  上面的查询本质上是这样的:从数组的第六个元素开始获取3个数组元素(记住第六个元素的索引为5)。
  可以使用#来获取数组的长度:

wingsummer@wingsummer-PC ~ → echo ${#animals[*]}
10

  可以使用加号等于运算符+=将数组添加到数组的末尾:

animals=(cat dog fish)
echo ${animals[*]}
animals+=(cow chick goat)
echo ${animals[*]}

内容总结

  • 数组是一种线性数据结构,具有可存储在变量中的有序元素。
  • 数组的每个元素都有一个索引,第一个索引是0。
  • 可以使用数组的索引来访问数组的各个元素。

小试牛刀

  1. 编写一个 bash 脚本,在脚本中定义一个数组,脚本的第一个参数指示运行脚本时打印到控制台的数组元素的索引。
  2. 编写一个 bash 脚本,在脚本中定义两个数组,当脚本运行时,数组长度的总和将打印到控制台。

相关文章: