1. Background
업무 중에 yq의 결과물을 각 변수에 등록하고 싶었는데, claude가 mapfile을 추천해줬다. 그 당시엔 이게 뭔가 싶었지만, 일단 급했기에 바로 사용했고 그 원리를 이제 정리해본다.
2. Usage
STDIN이나 파일 디스크립터에서 라인 단위로 파일을 읽어 배열에 저장해준다. (bash 4.0 이상부터 활용 가능)
$ mapfile [options] <array name>
# Example
$ mapfile lines < file.txt
$ echo ${lines[0]} # Print first line of file.txt
$ mapfile lines -t < file.txt # Remove newline in end of line
$ mapfile lines -n 10 < file.txt # At most read 10 lines
$ mapfile lines -s 10 < file.txt # Skip 10 lines
$ mapfile lines -C <callback func> < file.txt # Run callback function when read a line
bash < 4.0 에서는
IFS={{content}}#39;\n' read -d '' -r -a lines <<< ${multilines}