Warning: Undefined array key "custom_message" in /www/wwwroot/bbs.aaronyang.cc/wp-content/plugins/wpcopyrights/index.php on line 105

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

相关推荐

  • fg

    文章目录fg概要主要用途参数返回值例子注意 fg 将后台作业移动到前台终端运行 概要 fg [job_spec …] 主要用途 用于将后台作业(在后台运行的或者在后台挂起的作业…

    入门教程 2023年 12月 14日
  • mke2fs

    文章目录mke2fs补充说明语法选项参数实例 mke2fs 创建磁盘分区上的“etc2/etc3”文件系统 补充说明 mke2fs命令 被用于创建磁盘分区上的“etc2/etc3”…

    入门教程 2024年 1月 3日
  • semanage

    文章目录semanage补充说明语法选项实例 semanage 默认目录的安全上下文查询与修改 补充说明 semanage命令 是用来查询与修改SELinux默认目录的安全上下文。…

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

    文章目录colrm补充说明语法参数 colrm 删除文件中的指定列 补充说明 colrm命令 用于删除文件中的指定列。colrm命令从标准输入设备读取书记,转而输出到标准输出设备。…

    入门教程 2023年 12月 7日
  • uupick

    文章目录uupick补充说明语法选项例子 uupick 命令处理传送进来的文件 补充说明 uupick命令 处理传送进来的文件。 当其他主机通过UUCP将文件传送进来时,可利用uu…

    入门教程 2024年 3月 11日
  • Java 开发环境配置

    在本章节中我们将为大家介绍如何搭建Java开发环境。 Windows 上安装开发环境 Linux 上安装开发环境 安装 Eclipse 运行 Java 文章目录window系统安装…

    2023年 3月 4日
  • IOS GameKit

    文章目录简介实例步骤输出 简介 GameKit是iOS SDK中一个常用的框架。其核心功能有3个: 交互游戏平台Game Center, P2P设备通讯功能 In-Game Voi…

    2023年 4月 1日
  • pvremove

    文章目录pvremove补充说明语法选项参数实例 pvremove 删除一个存在的物理卷 补充说明 pvremove命令 用于删除一个存在的物理卷。使用pvremove指令删除物理…

    入门教程 2024年 3月 1日
  • ssh-keygen

    文章目录ssh-keygen补充说明语法选项 ssh-keygen 为ssh生成、管理和转换认证密钥 补充说明 ssh-keygen命令 用于为“ssh”生成、管理和转换认证密钥,…

    入门教程 2024年 3月 11日
  • cu

    文章目录cu补充说明语法选项实例 cu 用于连接另一个系统主机 补充说明 cu命令 用于连接另一个系统主机。cu(call up)指令可连接另一台主机,并采用类似拨号终端机的接口工…

    入门教程 2023年 12月 7日

发表回复

登录后才能评论
Translate »