-2
jsonval() {
temp=`echo $haystack | sed 's/\\\\\//\//g' | sed 's/[{}]//g' | awk -v k="text" ' {n=split($0,a,","); for (i=1; i<=n; i++) print a[i]}' | sed 's/\"\:\"/\|/g' | sed 's/[\,]/ /g' | sed ' s/\"//g' | grep -w $needle`
echo ${temp##*|}
}
dev_key='xxxxxxxxxxxx'
zip_code='48446'
city='Lapeer'
state='MI'
red=$(tput setaf 1)
textreset=$(tput sgr0)
haystack=$(curl -Ls -X GET http://api.wunderground.com/api/$dev_key/conditions/q/$state/$city.json)
needle='temperature_string'
temperature=$(jsonval $needle $haystack)
needle='weather'
current_condition=$(jsonval $needle $haystack)
echo -e '\n' $red $current_condition 'and' $temperature $textreset '\n'
此代碼應該使用開發人員密鑰來解析json天氣數據到終端以調用信息。有人可以解釋這段代碼在做什麼嗎? sed在做什麼特殊字符?
這是完整的代碼,有人可以解釋sed在做什麼,我知道它應該作爲一種替代方法,但爲什麼會出現如此多的斜槓和特殊字符?
什麼是echo $ {temp ## * |}在做什麼,所有這些特殊字符都讓我很難理解這段代碼。
運行這種CMD的用你自己的輸入並看到...... echo「a \\ b」| sed's/\\\\\ // \ // g' http://www.grymoire.com/Unix/Sed.html#uh-1 – 2014-12-07 04:28:27
其次,它的風格並不好,寫得一團糟,從中學習會引導你錯誤的方式。 – BMW 2014-12-07 04:34:04
「$乾草堆」的價值是什麼?如果沒有這個值,就不可能知道sed對字符串做了什麼,你將不得不將代碼切成片段,嘗試每個片斷查看它們的輸出。 – repzero 2014-12-07 04:53:40