Я пытаюсь сделать запрос и сохранитькаждый рядрезультат в элементе массива в 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