আমি নির্দিষ্ট ক্ষেত্রগুলি পেতে এবং তাদের ভেরিয়েবলগুলিতে রাখার জন্য jq এর সাথে কার্ল অনুরোধ ফিল্টার করার চেষ্টা করছি। প্রাথমিকভাবে, আমি এর মতো একটি প্রাথমিক কার্ল অনুরোধটি ব্যবহার করছিলাম:
myResponse=$(curl -u myUsername:myPassword -XGET "https://myWebsite.com/_count?pretty&q=TEST")
আমি আমার ব্যবহারকারীর নাম এবং পাসওয়ার্ড সরবরাহ করছি এবং 'টেস্ট' শব্দটি কতবার উপস্থিত রয়েছে তার জন্য একটি গণনা পাচ্ছি, যা সুন্দর জসনে ফিরে এসেছে। এই প্রতিক্রিয়াটি myResponse নামক একটি ভেরিয়েবলের মধ্যে রাখা হয়।
আমি জেসন থেকে নির্দিষ্ট গণনা মান পেতে এটি ফিল্টার করতে jq ব্যবহার করেছি:
count=`echo $myResponse | jq -r '.count'`
এটি কাজ করেছে, এবং আমাকে একটি সংখ্যা সরবরাহ করেছে।
তাই এখন আমি কিছুটা পরীক্ষা করতে চাইছিলাম। কার্ল অনুরোধের কাছ থেকে প্রতিক্রিয়া পাওয়ার পাশাপাশি আমিও প্রতিক্রিয়া কোড (200, 404 ইত্যাদি) পুনরুদ্ধার করতে চেয়েছিলাম। তাই আমি আমার কার্লের অনুরোধটি নিম্নলিখিতটির সাথে মানিয়ে নিয়েছি:
myResponse=$(curl --write-out %{http_code} --silent -u myUsername:myPassword -XGET "https://myWebsite.com/_count?pretty&q=DEBUG")
এটি JSON প্রতিক্রিয়া উভয়ই সাফল্যের সাথে প্রত্যাবর্তন করেছে এবং এর পরে এটি একটি নম্বর হিসাবে HTTP প্রতিক্রিয়া কোডটি ফেরত দেয়।
যাইহোক, একবার এটি JQ এ পাস করার পরে, আমি নিম্নলিখিত ত্রুটিটি পেয়েছি:
jq: error: Cannot index number with string
আমি কীভাবে এই ত্রুটিটি সমাধান করব? যখন এটি ঠিক জসন জকিউ এটির সূক্ষ্মভাবে পরিচালনা করেছিল, তবে এই রেসপন্সকোডটি শেষের সাথে যুক্ত হওয়ার সাথে সাথে এটি এটি বিশ্লেষণ করতে পারে না।
কৃতজ্ঞতা