সম্পাদনা: দয়া করে , দয়া করে , উত্তর দেওয়ার আগে এই পোস্টের নীচে তালিকাভুক্ত দুটি প্রয়োজনীয়তা পড়ুন। লোকেরা তাদের নতুন রত্ন এবং গ্রন্থাগারগুলি পোস্ট করে রাখে এবং কী নয়, যা স্পষ্টভাবে প্রয়োজনীয়তাগুলি পূরণ করে না।
কখনও কখনও আমি খুব সস্তায় একটি সাধারণ স্ক্রিপ্টে কিছু কমান্ড লাইন বিকল্প হ্যাক করতে চাই। গিওপটস বা পার্সিং বা এ জাতীয় কিছু না করেই এটি করার একটি মজাদার উপায়:
...
$quiet = ARGV.delete('-d')
$interactive = ARGV.delete('-i')
...
# Deal with ARGV as usual here, maybe using ARGF or whatever.
এটি একেবারে সাধারণ ইউনিক্স বিকল্পের বাক্য গঠন নয়, কারণ এটি বিকল্প হিসাবে নন-অপশন কমান্ড লাইন প্যারামিটারগুলি গ্রহণ করবে, " myprog -i foo bar -q" তবে আমি তার সাথে বাঁচতে পারি। (কিছু লোক, যেমন সাবভার্সন বিকাশকারীরা এটিকে পছন্দ করে Sometimes কখনও কখনও আমিও এটি করি))
উপরের তুলনায় কেবলমাত্র উপস্থিত বা অনুপস্থিত একটি বিকল্প প্রয়োগ করা যায় না। (একটি অ্যাসাইনমেন্ট, একটি ফাংশন কল, এক পার্শ্ব প্রতিক্রিয়া)) " -f ফাইলের নাম " এর মতো পরামিতি গ্রহণকারী বিকল্পগুলির সাথে মোকাবিলা করার জন্য কি একইরকম সহজ উপায় আছে ?
সম্পাদনা করুন:
একটি বিষয় আমি এর আগে তৈরি করিনি, কারণ ট্রোলপের লেখক উল্লেখ না করা পর্যন্ত এটি আমার কাছে স্পষ্ট হয়ে ওঠে নি যে লাইব্রেরিটি "একটি [800-লাইন] ফাইলে" ফিট করে, আমি কেবল পরিষ্কারের জন্যই দেখছি না বাক্য গঠন, তবে এমন একটি প্রযুক্তির জন্য যা নিম্নলিখিত বৈশিষ্ট্যগুলি রয়েছে:
কোডটির সম্পূর্ণতা স্ক্রিপ্ট ফাইলটিতে অন্তর্ভুক্ত করা যেতে পারে (আসল স্ক্রিপ্টটি নিজেরাই না ছাপিয়ে, যা কেবলমাত্র কয়েক ডজন লাইন হতে পারে), যাতে
binকোনও স্ট্যান্ডার্ড রুবি ১.৮ সহ যে কোনও সিস্টেমে একটি ফাইল একটি ডিয়ারে ফেলে দিতে পারে one । [5-7] ইনস্টলেশন এবং এটি ব্যবহার করুন। আপনি যদি কোনও রুবি স্ক্রিপ্ট লিখতে না পারেন যার কোনও বিবৃতি নেই এবং যেখানে কয়েকটি বিকল্পের বিশ্লেষণের কোডটি কয়েক ডজন লাইনের অধীনে রয়েছে, আপনি এই প্রয়োজনীয়তাটি ব্যর্থ হন।কোডটি ছোট এবং যথেষ্ট সহজ যে কোনওটি সরাসরি কোড টাইপ করার জন্য এটির যথেষ্ট পরিমাণে মনে রাখতে পারে যা অন্য কোথাও থেকে কাটা এবং পেস্ট করার চেয়ে কৌশলটি করবে। আপনি যেখানে কোনও ইন্টারনেট অ্যাক্সেসবিহীন ফায়ারওয়াল্ড সেভারের কনসোলে রয়েছেন সেই পরিস্থিতিটি ভেবে দেখুন এবং ক্লায়েন্টকে ব্যবহারের জন্য আপনি একটি দ্রুত স্ক্রিপ্ট টস করতে চান। আমি আপনার সম্পর্কে জানি না, তবে (উপরের প্রয়োজনে ব্যর্থ হওয়া ছাড়াও) সরলিকৃত মাইক্রো অপ্ট পার্সির 45 টি লাইন মুখস্থ করা আমার করণীয় নয়।
getoptlongএবং optparseমানক রুবি লাইব্রেরিতে থাকি , সুতরাং আপনার স্ক্রিপ্টটি মোতায়েন করার সময় আপনি সেগুলি অনুলিপি করার প্রয়োজন নেই - যদি রুবি সেই মেশিনে কাজ করে, require 'optparse'বা require 'getoptlong'খুব কাজ করবে।