POSIX শেল-এ কোনও ভেরিয়েবলের প্রাক / পোস্ট বাড়ানোর সময়, এই দুটি উদাহরণের মধ্যে পার্থক্য কী। তাদের দেখে মনে হচ্ছে তাদের একই পরিণতি হবে তবে তারা কি অন্যভাবে ব্যবহার করা হবে? আপনি কখন অন্যের চেয়ে বেশি পছন্দ করবেন?
X=$((X+1))
: $((X=X+1))
POSIX শেল-এ কোনও ভেরিয়েবলের প্রাক / পোস্ট বাড়ানোর সময়, এই দুটি উদাহরণের মধ্যে পার্থক্য কী। তাদের দেখে মনে হচ্ছে তাদের একই পরিণতি হবে তবে তারা কি অন্যভাবে ব্যবহার করা হবে? আপনি কখন অন্যের চেয়ে বেশি পছন্দ করবেন?
X=$((X+1))
: $((X=X+1))
উত্তর:
আপনার প্রথম উদাহরণে, $((X+1))
এক্স +1 এক্সপ্রেশনটি মূল্যায়ন করে ফলাফলটিতে প্রসারিত হয়, যা ভেরিয়েবল হিসাবে স্বাক্ষরিত হয়।
দ্বিতীয় উদাহরণে, একের মাধ্যমে $((X=X+1))
ইনক্রিমেন্টগুলি X
( $((X++))
এছাড়াও বৈধ এবং খাটো, তবে শেল দ্বারা অগত্যা সমর্থিত নয়), এর পরে নতুন মানটিতে প্রসারিত হয়$X
, যা নাল কমান্ডের প্রথম যুক্তি :
,। নাল কমান্ড তার যুক্তি উপেক্ষা করে এবং ফলাফলটি বাতিল করা হয় (পার্শ্ব প্রতিক্রিয়া সহ)।
আমি ব্যক্তিগতভাবে তিনটি (তুলনামূলক বিষয়গত) কারণে প্রথম ফর্মটি পছন্দ করব:
আপনি যদি কেবল একটি কমান্ডের মতো পরিবেশ পরিবর্তন করে থাকেন তবে আপনাকে প্রথম সংস্করণটি ব্যবহার করতে হবে
X=$((X+1)) /usr/local/bin/something
আপনাকে সরাসরি আর্গুমেন্টগুলিতে মূল্যায়ন যুক্ত করতে দ্বিতীয় ফর্মটি ব্যবহার করতে হবে:
ls -la "file-$((X++))" # or ...
ls -la "file-$((X=X+1))" # for better compatibility
এটির পছন্দসই পার্শ্ব প্রতিক্রিয়া রয়েছে, একটি লাইন সংরক্ষণ করে এবং বেশ স্পষ্ট।