從標準輸入讀取行并賦值到數組。
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