Bash

Bash - 從命令輸出創建數組時出現問題,該命令輸出包含帶空格的引用文本

  • April 3, 2017

對於我正在製作的腳本,我需要將命令的輸出轉換為數組。為了簡化,我使用 echo 做了一個例子:

arr=( $(echo '"test example" "test2 example"') )

我想要的是數組的第一個元素

test example

但是這樣做時:

echo ${arr[0]}

我明白了

"test

我必須做什麼才能得到我想要的結果?

假設echo不會像命令那樣產生正確的輸出,因此必須包含sed

mapfile -t arr < <(
   echo '"test example1" "test2 example2"' |
   sed 's/" "/"\n"/g'
)
eval "arr=( $(echo '"test example" "test2 example"') )"

echo "${arr[0]}"

for e in "${arr[@]}"; do
  echo "<$e>"
done

輸出

test example

<test example>
<test2 example>

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