クエリして保存しようとしています。各ライン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つの変更は、再度変更しない限り、スクリプトの残りの部分に適用されます。
答え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