2013-11-27 52 views
0

旁邊,我嘗試使用bash解析從捲曲的JSON響應我現在決定給有JQ一試。 我已經檢查的文件,但我無法找到一個方法來遍歷槽的元素和「做」什麼。JQ投結果爲慶典陣列

這裏有什麼,我想實現一個想法,把結果從JQ到一個數組,(它不工作)

__json=$($omd_response | ~/local-workspace/bash/jq -r '[.]') 
for x in "${__json[@]}" 
do 
    echo "-metadata" $x 
done 

任何其他的想法是非常讚賞。 感謝

+0

你能提供一些輸入和預期的輸出? – Birei

+0

'陣列=($(...))'被一般來說反模式。即使你設置了「IFS」,你也會得到不需要的行爲。 –

回答

0

此:

declare -a things 
things=($(jq tostring myfile.json)) 
for x in "${things[@]}"; do 
    echo "-metadata" "$x" 
done 

幾乎工作。它將事物分解爲空白。

這工作:

declare -a things 
OIFS=$IFS 
IFS= things=($(jq -r 'tojson|tostring' myfile.json)) 
IFS=$OIFS 
for x in "${things[@]}"; do 
    echo "-metadata" "$x" 
done 

真的,我們需要一個JSON感知殼...像ksh93的的複合變量,但JSON兼容。

+0

如果你的字符串中的一個是'',你會得到你的數組中的文件名列表。當你正在閱讀的字符串到慶典[按照最佳做法]這不會發生(http://mywiki.wooledge.org/BashFAQ/001)。 –