Estoy intentando hacer una consulta y almacenar.cada filada como resultado un elemento de matriz en ksh (tal vez bash). Sí:
result=($($PATH_UTI/querysh "
set heading off
set feedback off
SELECT columnA,columnb FROM user.comunication;"))
Yo tengo eso:
row1 = HOUSE CAR
row2 = DOC CAT
echo "${result[1]}" and it gives me HOUSE
Pero me gustaría conseguir:
echo "${result[1]}" gives: "HOUSE CAR"
Respuesta1
Debe cambiar el separador predeterminado IFS
para dividir los datos por carácter de final de línea y deshabilitar el globbing para set -f
evitar problemas con cadenas que contienen, por ejemplo, *
o ?
:
$ IFS=$'\n'
$ set -f
$ result=( $(printf "HOUSE CAR\nDOC CAT") )
$ echo "${result[0]}"
HOUSE CAR
$ echo "${result[1]}"
DOC CAT
Tenga en cuenta que ambos cambios permanecerán vigentes durante el resto del script a menos que se vuelvan a modificar.
Respuesta2
En Bash puedes usar mapfile
(debe probarse con tu resultado real):
# 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