एक बैश चर के लिए jq उत्पादन की स्थापना


18

मैं JSON को इस तरह से बाकी एपीआई से वापस पाने के लिए कर्ल का उपयोग कर रहा हूं:

content=$(curl -s  -X GET -H "Header:Value" http://127.0.0.1:8200/etc)
echo "${content}"| jq -r '.data.value'

जो मेरी जरूरत के मूल्य का उत्पादन करता है। तथापि; जब मैं इस तरह दिखने के लिए उपरोक्त कोड बदलता हूं:

content=$(curl -s  -X GET -H "Header:Value" http://127.0.0.1:8200/etc)
username=$(echo "${content}"| jq -r '.data.value')
echo $username

कुछ भी पैदा नहीं करता। मैं इसे कैसे बदल सकता हूं ताकि उपयोगकर्ता नामांतर को आउटपुट सौंपा जाए?

जवाबों:


14

इसको कोड बदला और यह काम किया:

content=$(curl -s  -X GET -H "Header:Value" http://127.0.0.1:8200/etc) 
username=$( echo jq -r  '.data.value' <<< "${content}" ) 
echo ${username}

1
मुझे पता है कि Syntax error: redirection unexpected( echoअन्य उत्तर के रूप में या उसके बिना)
मैट बी

2
@MattB, आप <<<ऑपरेटर को ऐश-आधारित शेल में उपयोग करने की कोशिश कर रहे हैं जो इसका समर्थन नहीं करता है। किसी भी स्थिति में, zsh या bash में भी जो उस ऑपरेटर का समर्थन करता है, उस कोड का कोई मतलब नहीं है। यह स्टड पुनर्निर्देशित echoकरता है जो इसे नहीं पढ़ता है। यह आश्चर्य है कि यह उत्तर 10 उत्थान प्राप्त करने में कैसे सफल रहा।
स्टीफन चेज़लस

4

यह केवल तभी काम करता है जब आप दूसरी पंक्ति पर "इको" खो देते हैं।

content=$(curl -s  -X GET -H "Header:Value" http://127.0.0.1:8200/etc) 
username=$( echo jq -r  '.data.value' <<< "${content}" ) 
echo ${username}

0

आप इसे एक लाइनर में बदल सकते हैं:

username=$( curl -s  -X GET -H "Header:Value" http://127.0.0.1:8200/etc |  jq -r  '.data.value' ) 
echo ${username}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.