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 JSON

    JSON(JavaScript Object Notation,JavaScript 对象表示法),是存储和交换文本信息的语法,类似 XML。 JSON 比 XML 更小、更快,更…

    2023年 5月 16日
  • lsb_release

    lsb_release 显示发行版本信息 补充说明 LSB是Linux Standard Base的缩写, lsb_release命令 用来显示LSB和特定版本的相关信息。如果使用…

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

    文章目录unset概要主要用途选项参数返回值例子注意 unset 删除指定的shell变量或函数。 概要 unset [-f] [-v] [-n] [name …] 主要用途 …

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

    文章目录zip补充说明语法选项参数实例问题解决 zip 可以用来解压缩文件 补充说明 zip命令 可以用来解压缩文件,或者对文件进行打包操作。zip是个使用广泛的压缩程序,文件经它…

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

    文章目录getenforce补充说明语法例子 getenforce 显示当前SELinux的应用模式,是强制、执行还是停用 补充说明 grename命令 可以重命名卷组的名称。 语…

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

    文章目录popd概要主要用途选项参数返回值例子注意参考链接 popd 从目录堆栈中删除目录。 概要 popd [-n] [+N | -N] 主要用途 从目录堆栈中删除目录,如果是顶…

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

    文章目录ldconfig补充说明语法选项 ldconfig 动态链接库管理命令 补充说明 ldconfig命令 的用途主要是在默认搜寻目录/lib和/usr/lib以及动态库配置文…

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

    文章目录shift概要主要用途参数返回值例子注意 shift 移动位置参数。 概要 shift [n] 主要用途 将位置参数$n, $n+1…重命名为$1, $2…。 参数…

    入门教程 2024年 3月 4日
  • HTTP content-type

    Content-Type(内容类型),一般是指网页中存在的 Content-Type,用于定义网络文件的类型和网页的编码,决定浏览器将以什么形式、什么编码读取这个文件,这就是经常看…

    2023年 5月 14日
  • Java 异常处理

    异常是程序中的一些错误,但并不是所有的错误都是异常,并且错误有时候是可以避免的。 比如说,你的代码少了一个分号,那么运行出来结果是提示是错误 java.lang.Error;如果你…

    2023年 3月 4日

发表回复

登录后才能评论
Translate »