파이프의 출력을 배열에 저장하는 방법

파이프의 출력을 배열에 저장하는 방법

배열에 넣어야 하는 데이터를 가져오는 시나리오가 있습니다. echo를 사용하여 데이터를 배열에 넣은 후에는 인쇄해야 합니다.

v=`cat $FILE | rev | cut -d'|' -f4- | rev | cut -d'|' -f2- | sed 's/|/ /g'`

출력은 다음을 제공합니다.

123.23 3453.234

이 출력은 "arraydemo" 배열에 영향을 미칩니다.

mapfile -t arraydemo < echo "$v"

아무것도 인쇄하지 않으면 echo arraydemo다음과 같은 오류가 표시됩니다. echo: 해당 파일이나 디렉터리가 없습니다

echo "${arraydemo[@]}"

이는 데이터가 인쇄되는 방식이 아니라 스크립트가 실행될 때의 출력입니다. echo "${arraydemo[@]}"

+ FILE=demo.txt
++ cat demo.txt
++ rev
++ cut '-d|' -f4-
++ rev
++ cut '-d|' -f2-
++ sed 's/|/ /g'
+ var='16.84 15.24'
+ mapfile -t arraydemo

echo ''

답변1

$ a="1234 5678"

$ mapfile -t arraydemo < <(echo "${a}")

$ echo "${arraydemo[@]}"
1234 5678

관련 정보