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

相关推荐

  • 33. 函数是一等公民(头等函数)

    欢迎来到 Golang 系列教程的第 33 篇。 文章目录什么是头等(第一类)函数?匿名函数用户自定义的函数类型高阶函数把函数作为参数,传递给其它函数在其它函数中返回函数闭包头等函…

    2023年 12月 5日
  • local

    文章目录local概要主要用途选项参数返回值例子错误用法注意 local 在函数内定义局部变量。 概要 local [-aAfFgilnrtux] [-p] [name[=valu…

    入门教程 2023年 12月 19日
  • 基本语法

    文章目录C++ 程序结构实例编译 & 执行 C++ 程序C++ 中的分号 & 语句块C++ 标识符C++ 关键字三字符组C++ 中的空格 C++ 程序结构 让我们看…

    2024年 3月 18日
  • 31. 自定义错误

    欢迎来到 Golang 系列教程的第 31 篇。 在上一教程里,我们学习了 Go 中的错误是如何表示的,并学习了如何处理标准库里的错误。我们还学习了从标准库的错误中提取更多的信息。…

    2023年 12月 5日
  • Java 教程

    Java 是由 Sun Microsystems 公司于 1995 年 5 月推出的高级程序设计语言。 Java 可运行于多个平台,如 Windows, Mac OS 及其他多种 …

    2023年 3月 4日
  • mailq

    文章目录mailq补充说明语法选项实例 mailq 显示待发送的邮件队列 补充说明 mailq命令 用户显示待发送的邮件队列,显示的每一个条目包括邮件队列id、邮件大小、加入队列时…

    入门教程 2024年 1月 3日
  • HTML 链接

    HTML 使用超级链接与网络上的另一个文档相连。几乎可以在所有的网页中找到链接。点击链接可以从一张页面跳转到另一张页面。 文章目录HTML 超链接(链接)HTML 链接语法实例HT…

    2023年 4月 12日
  • tac

    文章目录tac概要主要用途参数选项返回值例子注意 tac 连接多个文件并以行为单位反向打印到标准输出。 概要 tac [OPTION]… [FILE]… 主要用途 按行为单…

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

    文章目录pvchange补充说明语法选项参数实例 pvchange 修改物理卷属性 补充说明 pvchange命令 允许管理员改变物理卷的分配许可。如果物理卷出现故障,可以使用pv…

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

    文章目录whatis补充说明语法实例 whatis 查询一个命令执行什么功能 补充说明 whatis命令 是用于查询一个命令执行什么功能,并将查询结果打印到终端上。 whatis命…

    入门教程 2024年 1月 3日

发表回复

登录后才能评论
Translate »