কার্ল করতে বন্ধনী সহ একটি URL পাস করা


305

যদি আমি বন্ধুর সমন্বিত কার্লের জন্য একটি URL পাস করার চেষ্টা করি তবে এটি একটি ত্রুটি নিয়ে ব্যর্থ হয়:

$ curl 'http://www.google.com/?TEST[]=1'
curl: (3) [globbing] illegal character in range specification at pos 29

তবে, যদি আমি উভয় বন্ধনী থেকে রক্ষা পাই তবে এটি কাজ করে বলে মনে হচ্ছে:

$ curl 'http://www.google.com/?TEST\[\]=1'

মজার বিষয় হল, আমি শুধুমাত্র প্রথম বন্ধনীটি এড়াতে ব্যাকস্ল্যাশ ব্যবহার করি এটি ত্রুটি কোড 20497 সহ নিঃশব্দে ব্যর্থ হয়:

$ curl 'http://www.google.com/?TEST\[]=1'
$ echo $!
20497

আমার প্রশ্নটি হল এটি সাধারণ ক্ষেত্রে কীভাবে ঠিক করা যায়? এমন কোনও যুক্তি আছে যা ইউআরএলগুলি স্বয়ংক্রিয়ভাবে পালিয়ে যাবে, বা কার্লগুলিতে যাওয়ার আগে পালাতে হবে এমন অক্ষরগুলির একটি বিবরণ?

উত্তর:


481

কিছু মনে করবেন না, আমি এটি ডক্সে পেয়েছি:

-g/--globoff
              This  option  switches  off  the "URL globbing parser". When you set this option, you can
              specify URLs that contain the letters {}[] without having them being interpreted by  curl
              itself.  Note  that  these  letters  are not normal legal URL contents but they should be
              encoded according to the URI standard.

10
আমার জন্য, এটি কাজ করে না। প্রতি বর্গাকার বন্ধনীটির আগে আমাকে একটি add যুক্ত করতে হয়েছিল
যিশুস্পেরালট্যাক

@ জেসুস্পেরালটাক আমার জন্য একই, ম্যাকওএস সহ
জিন

আমার জন্য এটি কাজ করেছে - ওএস এক্স হাই সিয়ারে, কার্ল 7.54.0 (x86_64-আপেল-ডারউইন 17.0) লাইবকার্ল / 7.54.0।
শেড

1
@ জিন @ জেসুস্পেরালট্যাক আমার জন্য এটি উইন্ডোতে কাজ করে যদি কমান্ডটি হয়curl -L -o <local_file_name> -g <url>
স্টিভেন লিয়াং 'ই

আমার জন্য কাজ করেছেন CentOS 7.1। কার্ল সংস্করণ 7.29.0 (x86_64-redhat-linux-gnu) libcurl / 7.29.0)
প্যাটস

0

গ্লোববিং বন্ধনী ব্যবহার করে, তাই তাদের একটি স্ল্যাশ দিয়ে পালাতে হবে \। বিকল্পভাবে, নিম্নলিখিত কমান্ড-লাইন স্যুইচ গ্লোব্বিং অক্ষম করবে:

--globoff(বা সংক্ষিপ্ত-বিকল্প সংস্করণ -g:)

উদা:

curl --globoff https://www.google.com?test[]=1
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.