여러 쿼리 결과를 쉘 스크립트 변수(배열)에 저장하는 방법은 무엇입니까?

여러 쿼리 결과를 쉘 스크립트 변수(배열)에 저장하는 방법은 무엇입니까?

쿼리하고 저장하려고 합니다.각 라인ksh(아마도 bash)에서 배열 요소를 생성합니다. 나는 다음을 원한다:

result=($($PATH_UTI/querysh "
set heading off
set feedback off
SELECT columnA,columnb FROM user.comunication;"))

나는 이것을 가지고있다:

row1 = HOUSE CAR
row2 = DOC   CAT
echo "${result[1]}" and it gives me HOUSE

하지만 나는 다음을 얻고 싶다:

echo "${result[1]}" gives: "HOUSE CAR"

답변1

또는 다음과 같은 문자열이 포함된 문제를 방지 IFS하려면 줄 끝 문자로 데이터를 분할하고 와일드카드를 비활성화하도록 기본 구분 기호를 변경해야 합니다 .set -f*?

$ IFS=$'\n'
$ set -f
$ result=( $(printf "HOUSE CAR\nDOC   CAT") )
$ echo "${result[0]}"
HOUSE CAR
$ echo "${result[1]}"
DOC   CAT

이 두 가지 변경 사항은 다시 변경하지 않는 한 스크립트의 나머지 부분에 적용됩니다.

답변2

Bash에서는 다음을 사용할 수 있습니다 mapfile(실제 결과로 테스트해야 함).

# note that the parenthesis are not needed
$ result="HOUSE CAR
DOC   CAT"
$ mapfile -t arr < <(printf "%s" "$result")
$ echo "${arr[0]}" # or 1 if the first row is empty
HOUSE CAR

관련 정보