Bash
如何將查詢多個結果儲存在 shell 腳本變數(數組)中?
我正在嘗試進行查詢並將每一行結果儲存在 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