クエリを実行して保存しようとしています各行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