2012-09-20 14 views
18

का कर्ल "लिखें" मूल्य मैं वर्तमान में एक बैश स्क्रिप्ट लिख रहा हूं और मैं कर्ल का उपयोग कर रहा हूं। मैं क्या करना चाहता हूं प्रतिक्रिया का एक विशिष्ट शीर्षलेख प्राप्त करें।विशिष्ट शीर्षलेख

curl -I -w "%{etag}" "server/some/resource" 

दुर्भाग्य से ऐसा लगता है जैसे कि डब्ल्यू, --write-आउट विकल्प केवल चर इसका समर्थन करता है का एक सेट होता है और किसी भी शीर्ष लेख है कि मुद्रित नहीं कर सकते:

मूल रूप से मैं इस आदेश को काम करना चाहते हैं प्रतिक्रिया का हिस्सा। क्या मुझे ईटीएजी मूल्य प्राप्त करने के लिए कर्ल आउटपुट को पार्स करने की ज़रूरत है या क्या एक विशिष्ट शीर्षलेख के मूल्य को कर्ल प्रिंट करने का कोई तरीका है?

जाहिर की तरह

curl -sSI "server/some/resource" | grep 'ETag:' | sed -r 's/.*"(.*)".*/\1/' 

कुछ काम कर देता है, लेकिन यह कर्ल फिल्टर हैडर के लिए अच्छे होगा।

उत्तर

10

"-w" के लिए निर्दिष्ट चर सीधे http शीर्षलेख से कनेक्ट नहीं हैं।

curl -I "server/some/resource" | grep -Fi etag 
15

आप एक ही एसईडी या awk कमांड के साथ एक विशिष्ट शीर्ष लेख मुद्रित कर सकते हैं, लेकिन HTTP हेडर CRLF लाइन अंत का उपयोग करें: तो यह की तरह आप उन्हें अपने दम पर "पार्स" करने के लिए है लग रहा है।

awk 'BEGIN {FS=": "}/^Content-Type/{print $2}' 
:

curl -sI stackoverflow.com | tr -d '\r' | sed -En 's/^Content-Type: (.*)/\1/p' 
आप FS=": " जोड़ सकते हैं awk अगर मान रिक्तियाँ साथ

संबंधित मुद्दे