শেল স্ক্রিপ্টগুলিতে ব্যাকটিক্স বা ডলার ব্যবহার করা


9

আমি শেল স্ক্রিপ্ট লিখতে ব্যস্ত (ব্যাশ ব্যবহার করে) যেখানে আমাকে অন্য কমান্ডের ফিরে আসা ফলাফল থেকে কিছু পরিবর্তনশীল পপুলেশন করতে হবে।

সুতরাং আমি এটির মতো একটি বাক্য গঠন ব্যবহার করছি:

VAR=`command 2>/dev/null`

তবে স্ক্রিপ্ট শেলগুলি সম্পর্কিত তথ্য অনুসন্ধান করার সময়, আমি প্রায়শই দেখতে পেলাম যে উপরেরগুলি নিম্নলিখিত বাক্য গঠনটি ব্যবহার করেও অর্জন করা যেতে পারে:

VAR=$(command 2>/dev/null)

উভয়ই আমার পক্ষে কাজ করছে (আমি উভয় ক্ষেত্রেই প্রত্যাশিত ফলাফল পেয়েছি) এবং আমি এভাবে ভাবছি যে আমি এখনও উভয় ফর্মকে আন্তঃআযোগে ব্যবহার করতে পারি বা ভবিষ্যতের বিবর্তনের সাথে সামঞ্জস্য থাকতে নিশ্চিত হতে যদি আমাকে একটি ফর্মের সাথে লেগে থাকতে হয় তবে শেল?



বেলাকোয়া লিঙ্কগুলি পার্থক্য এবং ব্যবহার সম্পর্কে প্রচুর তথ্য সরবরাহ করে। এটি যেহেতু এটি উবুন্টু ইস্যু সম্পর্কিত নয়, তবে প্রোগ্রামিংয়ের সাথে সম্পর্কিত is আমি উপরে উল্লিখিত লিঙ্কগুলি অনুসরণ করার জন্য সুপারিশ করছি।
লুইস আলভারাডো

উত্তর:


13

ডলার ব্যবহার করুন। ব্যাকটিকগুলি আধা-অবহেলিত , কারণ এগুলি ব্যবহার করা আরও জটিল (লিঙ্কটি দেখুন), এবং কোড গল্ফ করছেন এবং কোনও একক চরিত্র সংরক্ষণ করার প্রয়োজন না থাকলে তাদের কোনও সুবিধা নেই । এগুলি সম্ভবত শীঘ্রই যেকোনো সময় জনপ্রিয় শেলগুলি থেকে সরানো হবে না, সুতরাং আপনি আপাতত ব্যবহার করা নিরাপদ।


3

$()আপনি যখনই পারেন ডলার সাইন নোটেশন দিয়ে আটকে দিন। যখন আপনার নেস্টেড কোটিংয়ের প্রয়োজন হয় তখন ব্যাকটিকগুলি জটিল / বিভ্রান্ত হয়। উদা:

$ FOO=`echo "foo's"`
$ echo $FOO
foo's

ব্যাকটিক্সের পরিবর্তে $()একই আউটপুট পাওয়া যায়, এবং পড়তে সহজ হয় (পৃথক কোণগুলি পৃথকীকরণের জন্য কয়েকটি কম উদ্ধৃতি):

$ FOO=$(echo "foo's")
$ echo $FOO
foo's

এটি, এবং প্রতিটি উদ্ধৃতি চিহ্ন (একক উদ্ধৃতি, ডাবল উদ্ধৃতি, ব্যাকটিক) এর অর্থ শেলের মধ্যে আলাদা কিছু, সুতরাং using ব্যবহার করা জটিলতার একটি স্তর সরাতে সহায়তা করে। এবং আপনাকে যে বিকাশকারী অনুসরণ করে তারা আপনাকে ধন্যবাদ জানায়, কারণ আপনি কী করেছেন তা নির্ধারণ করার জন্য তার কাছে আরও সহজ সময় হবে।


ব্যাকটিকগুলি এমনকি কার্যকরভাবে বাসা বাঁধতে পারে না।
বার্নহার্ড

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