我正在嘗試進行查詢並存儲每行在 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