readarray(mapfile)
在shell中,内建(builtin)命令readarray和mapfile用法相同,格式如下:

readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array]

readarray命令用于从标准输入或选项“-u”指定的文件描述符fd中读取文本行,然后赋值给索引(下标)数组array,如果不指定数组array,则使用默认的数组名MAPFILE。

下面解释readarray命令中各选项的作用。

“-n count”:复制最多count行,如果count为0,则复制所有的行。
“-O origin”:从下标位置origin开始对数组赋值,默认为0。
“-s count”:忽略开始读取的count行。
“-t”:删除文本行结尾的换行符。
“-u fd”:从文件描述符fd中读取文本行。
“-C callback”:每当读取选项“-c”指定的quantum行时(默认为5000行),就执行一次回调callback。

下面以简单的例子说明readarray命令的用法:


$ readarray foo
hello world
hello bash
^C
$ echo ${foo[@]}
hello world hello bash
$ echo ${#foo[@]}
2
$ echo ${foo[0]}
hello world
$ echo ${foo[1]}
hello bash

readarray 命令实例:

Linux的Bash命令行(A-Z排序)