Ich versuche eine Abfrage durchzuführen und zu speichernjede Reiheergibt ein Array-Element in KSH (vielleicht Bash). Ich mache:
result=($($PATH_UTI/querysh "
set heading off
set feedback off
SELECT columnA,columnb FROM user.comunication;"))
Ich habe das:
row1 = HOUSE CAR
row2 = DOC CAT
echo "${result[1]}" and it gives me HOUSE
Aber ich hätte gerne:
echo "${result[1]}" gives: "HOUSE CAR"
Antwort1
Sie müssen das Standardtrennzeichen ändern, IFS
um die Daten nach dem Zeilenendezeichen zu trennen, und das Globbing deaktivieren, um set -f
Probleme mit Zeichenfolgen zu vermeiden, die beispielsweise *
oder enthalten ?
:
$ IFS=$'\n'
$ set -f
$ result=( $(printf "HOUSE CAR\nDOC CAT") )
$ echo "${result[0]}"
HOUSE CAR
$ echo "${result[1]}"
DOC CAT
Beachten Sie, dass beide Änderungen für den Rest des Skripts wirksam bleiben, sofern sie nicht wieder zurückgesetzt werden.
Antwort2
In Bash können Sie Folgendes verwenden mapfile
(es sollte mit Ihrem tatsächlichen Ergebnis getestet werden):
# 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