mapfile

從標準輸入讀取行並賦值到數組。

概要

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

主要用途

  • 從標準輸入或文件描述符讀取行並賦值到數組。

選項

 1-d delim       將delim設爲行分隔符,代替默認的換行符。
 2-n count       從標準輸入中獲取最多count行,如果count爲零那麼獲取全部。
 3-O origin      從數組下標爲origin的位置開始賦值,默認的下標爲0。
 4-s count       跳過對前count行的讀取。
 5-t             讀取時移除行分隔符delim(默認爲換行符)。
 6-u fd          從文件描述符fd中讀取。
 7-C callback    每當讀取了quantum行時,調用callback語句。
 8-c quantum     設定讀取的行數爲quantum。
 9
10如果使用-C時沒有同時使用-c指定quantum的值,那麼quantum默認爲5000。
11當callback語句執行時,將數組下一個要賦值的下標以及讀取的行作爲額外的參數傳遞給callback語句。
12如果使用-O時沒有提供起始位置,那麼mapfile會在實際賦值之前清空該數組。

參數

array(可選):用於輸出的數組名稱。如果沒有指定數組名稱,那麼會默認寫入到變量名爲MAPFILE的數組中。

返回值

返回成功除非使用了非法選項、指定的數組是隻讀的、指定的數組不是下標數組。

例子

 1# 常見的讀取形式。
 2mapfile < source_file target_array
 3cat source_file |mapfile target_array
 4mapfile -u fd target_array
 5
 6# 只讀取前5行。
 7mapfile < source_file -n 5 target_array
 8
 9# 跳過前5行。
10mapfile < source_file -s 5 target_array
11
12# 在數組指定的下標開始賦值。
13# 請注意:這樣做不會清空該數組。
14mapfile < source_file -O 2 target_array
15
16# 讀取時設定行分隔符爲tab。
17# 注意,第二行的tab在終端需要用ctrl+v tab輸入;
18mapfile < source_file -d $'\t' target_array
19mapfile < source_file -d '	' target_array
20
21# 讀取時移除行分隔符(tab)。
22mapfile < source_file -d $'\t' -t target_array
23# 讀取時移除行分隔符(換行符)。
24mapfile < source_file -t target_array
25
26# 每讀取2行,執行一次語句(在這裏是echo)。
27mapfile < source_file -C "echo CALLBACK:" -c 2 target_array
28
29# 遍歷下標,依次顯示數組的元素。
30for i in ${!target_array[@]}; do
31  printf "%s" ${target_array[i]}
32done

注意

  1. 該命令是bash內建命令,相關的幫助信息請查看help命令。
  2. bash內建命令readarray是mapfile的同義詞。

來源:https://github.com/jaywcjlove/linux-command

最後修改於: Wednesday, January 31, 2024

相關文章:

翻譯: