2015-05-20 277 views
3

目前我有如何讀取字符串數組,從數組中獲取值

DATE_LIST=$(cat "$OUT_FILE" | xmlstarlet sel -T -t -m "//*[local-name()='entry']//*[local-name()='$start_position_date'][@name='beginposition']" -v '.' -n) 

的結果是這樣的:

DATE_LIST= 2015-10-10 
2015-11-11 

...等等

IFS='\n' read -a array <<< "$DATE_LIST" 

echo "${array[0]}" //I get the first one 
echo "${array[1]}" //I get nothing 

如何正確解析它? DATE_LIST由xml生成,字符串用\n分隔。

+3

如果DATE_LIST'的'的每個元素自由空格的保證,則可以直接與'陣列=($(xmlstartlet ... < 「$ OUT_FILE」))'填充陣列。 – chepner

+4

另外,您需要'IFS = $'\ n''來將'IFS'設置爲一個實際的換行符。 – chepner

+0

第一個解決方案的作品,謝謝! 並在迴應第二條評論時添加$不會影響結果IFS = $'\ n'讀取-a數組<<<「$ DATE_LIST」' – user3960875

回答

0

這會將輸出中的每一行附加到數組中,支持帶有空格的 行。

array=() 
IFS=' 
' 
for line in $(cat "$OUT_FILE" | xmlstarlet set -T ...) 
do 
    array+=("$line") 
done 
unset IFS