Bash

如何將查詢多個結果儲存在 shell 腳本變數(數組)中?

  • October 28, 2021

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

您需要更改預設分隔符IFS以按行尾字元拆分數據並禁用萬用字元set -f以避免包含例如*或的字元串出現問題?

$ IFS=$'\n'
$ set -f
$ result=( $(printf "HOUSE CAR\nDOC   CAT") )
$ echo "${result[0]}"
HOUSE CAR
$ echo "${result[1]}"
DOC   CAT

請注意,除非改回,否則這兩項更改將在腳本的其餘部分保持有效。

在 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

引用自:https://unix.stackexchange.com/questions/675173