বাশ: allyচ্ছিকভাবে একটি আদেশে আর্গুমেন্ট প্রেরণ করা


21

আমি কমান্ড কলটিতে যুক্তি যুক্ত করার চেষ্টা করছি অন্য ভেরিয়েবলের উপর নির্ভর করে। শেল স্ক্রিপ্টিং কোডটি দেখুন:

curl \
  $([ -z "${title}" ] || echo --data-urlencode title=${title}) \
  http://example.com

উদাহরণস্বরূপ, যদি titleশূন্য না দেওয়া হয় তবে একটি যুক্তিতে যুক্ত করা হবে curl

titleস্পেস থাকলে এটি সঠিকভাবে কাজ করে না । এছাড়াও আমি $(...)উদ্ধৃতিগুলি ঘিরে রাখতে পারিনি , কারণ যদি titleএটি বাতিল হয় তবে এটিতে অপ্রত্যাশিত খালি যুক্তি আসবে curl

এটিকে প্রত্যাশা মতো কাজ করতে আমার কী করা উচিত।

উত্তর:


23

আমি ব্যাশ ${var:+...}সিনট্যাক্স দিয়ে সমস্যার সমাধান করেছি , ( রেফারেন্স ) ।

স্ক্রিপ্ট এখন পরিবর্তিত হয়

curl \
    ${title:+ --data-urlencode "title=${title}"} \
    http://example.com

যা নিখুঁতভাবে কাজ করে।

আরও দেখুন:

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.