2015-05-20 235 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