mapfile

mapfile

从标准输入读取行并赋值到数组。

概要

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

主要用途

  • 从标准输入或文件描述符读取行并赋值到数组。

选项

-d delim       将delim设为行分隔符,代替默认的换行符。
-n count       从标准输入中获取最多count行,如果count为零那么获取全部。
-O origin      从数组下标为origin的位置开始赋值,默认的下标为0。
-s count       跳过对前count行的读取。
-t             读取时移除行分隔符delim(默认为换行符)。
-u fd          从文件描述符fd中读取。
-C callback    每当读取了quantum行时,调用callback语句。
-c quantum     设定读取的行数为quantum。

如果使用-C时没有同时使用-c指定quantum的值,那么quantum默认为5000。
当callback语句执行时,将数组下一个要赋值的下标以及读取的行作为额外的参数传递给callback语句。
如果使用-O时没有提供起始位置,那么mapfile会在实际赋值之前清空该数组。

参数

array(可选):用于输出的数组名称。如果没有指定数组名称,那么会默认写入到变量名为MAPFILE的数组中。

返回值

返回成功除非使用了非法选项、指定的数组是只读的、指定的数组不是下标数组。

例子

# 常见的读取形式。
mapfile < source_file target_array
cat source_file |mapfile target_array
mapfile -u fd target_array

# 只读取前5行。
mapfile < source_file -n 5 target_array

# 跳过前5行。
mapfile < source_file -s 5 target_array

# 在数组指定的下标开始赋值。
# 请注意:这样做不会清空该数组。
mapfile < source_file -O 2 target_array

# 读取时设定行分隔符为tab。
# 注意,第二行的tab在终端需要用ctrl+v tab输入;
mapfile < source_file -d $'\t' target_array
mapfile < source_file -d '  ' target_array

# 读取时移除行分隔符(tab)。
mapfile < source_file -d $'\t' -t target_array
# 读取时移除行分隔符(换行符)。
mapfile < source_file -t target_array

# 每读取2行,执行一次语句(在这里是echo)。
mapfile < source_file -C "echo CALLBACK:" -c 2 target_array

# 遍历下标,依次显示数组的元素。
for i in ${!target_array[@]}; do
  printf "%s" ${target_array[i]}
done

注意

  1. 该命令是bash内建命令,相关的帮助信息请查看help命令。
  2. bash内建命令readarray是mapfile的同义词。

若文章对你有帮助,可以点赞或打赏支持我们。发布者:Aurora,转载请注明出处:http://61.174.243.28:13541/AY-knowledg-hub/mapfile/

(0)
AuroraAurora站点维系者
上一篇 2024年 1月 3日 下午6:02
下一篇 2024年 1月 3日 下午6:02

相关推荐

  • Pandas安装

    安装 pandas 需要基础环境是 Python,开始前我们假定你已经安装了 Python 和 Pip。 使用 pip 安装 pandas: pip install pandas …

    2023年 5月 16日
  • rpm

    文章目录rpm补充说明语法选项参数实例更多实例 rpm RPM软件包的管理工具 补充说明 rpm命令 是RPM软件包的管理工具。rpm原本是Red Hat Linux发行版专门用来…

    入门教程 2024年 3月 4日
  • IOS发送电子邮件

    文章目录简介实例步骤输出 简介 我们可以使用IOS设备中的电子邮件应用程序发送电子邮件。 实例步骤 1、创建一个简单的View based application 2、选择项目文件…

    2023年 4月 1日
  • atrm

    文章目录atrm补充说明语法选项参数实例 atrm 删除待执行任务队列中的指定任务 补充说明 atrm命令 用于删除待执行任务队列中的指定任务。 语法 atrm(选项)(参数) 选…

    入门教程 2023年 12月 6日
  • lvcreate

    文章目录lvcreate补充说明语法选项参数实例 lvcreate 用于创建LVM的逻辑卷 补充说明 lvcreate命令 用于创建LVM的逻辑卷。逻辑卷是创建在卷组之上的。逻辑卷…

    入门教程 2023年 12月 19日
  • dpkg

    文章目录dpkg补充说明语法选项参数实例 dpkg Debian Linux系统上安装、创建和管理软件包 补充说明 dpkg命令 是Debian Linux系统用来安装、创建和管理…

    入门教程 2023年 12月 7日
  • Helm 升级

    升级版本 文章目录简介可选项从父命令继承的命令请参阅 简介 该命令将发布升级到新版的chart。 升级参数必须是发布和chart。chart参数可以是:chart引用(&#8216…

    入门教程 2023年 12月 14日
  • apt-key

    文章目录apt-key补充说明语法参数实例 apt-key 管理Debian Linux系统中的软件包密钥 补充说明 apt-key命令 用于管理Debian Linux系统中的软…

    入门教程 2023年 12月 6日
  • runlevel

    文章目录runlevel补充说明语法知识扩展 runlevel 打印当前Linux系统的运行等级 补充说明 runlevel命令 用于打印当前Linux系统的运行等级。 语法 ru…

    入门教程 2024年 3月 4日
  • lha

    文章目录lha补充说明选项实例 lha 压缩或解压缩lzh格式文件 补充说明 lha命令 是从lharc演变而来的压缩程序,文件经它压缩后,会另外产生具有.lzh扩展名的压缩文件。…

    入门教程 2023年 12月 19日

发表回复

登录后才能评论
Translate »