羽夏 Bash 简明教程下部分,详细介绍了数组、花括号扩展、循环函数,并且还介绍了初学者常见编写 Bash 易犯的错误。 写在前面 该文章根据 the unix workbench 中的 Bash Programming 进行汉
该文章根据 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。
- 可以使用数组的索引来访问数组的各个元素。
- 编写一个 bash 脚本,在脚本中定义一个数组,脚本的第一个参数指示运行脚本时打印到控制台的数组元素的索引。
- 编写一个 bash 脚本,在脚本中定义两个数组,当脚本运行时,数组长度的总和将打印到控制台。