সমস্যাটি হ'ল চরিত্রের পরিসীমাটি [a-z]
আসলে বড় হাতের অক্ষরগুলিকে অন্তর্ভুক্ত করে। এটি ব্যাশ ম্যানুয়ালটিতে ব্যাখ্যা করা হয়েছে :
একটি বন্ধনী এক্সপ্রেশন মধ্যে, একটি পরিসীমা এক্সপ্রেশন দুটি হাইফেন দ্বারা পৃথক দুটি অক্ষর নিয়ে গঠিত। এটি অন্তর্ভুক্ত সহ দুটি চরিত্রের মধ্যে সাজানো যে কোনও একক অক্ষরের সাথে মেলে। ডিফল্ট সি লোকালে, বাছাইয়ের ক্রম হল দেশীয় চরিত্রের ক্রম; উদাহরণস্বরূপ, '[বিজ্ঞাপন]' '[abcd]' এর সমতুল্য। অন্যান্য লোকেলগুলিতে, বাছাইয়ের ক্রমটি নির্দিষ্ট করা হয়নি, এবং '[বিজ্ঞাপন]' '[abcd]' বা '[aBbCcDd]' এর সমতুল্য হতে পারে , বা এটি কোনও অক্ষর, বা অক্ষরের সেটের সাথে ব্যর্থ হতে পারে ম্যাচগুলি এমনকি ত্রুটিযুক্ত হতে পারে। ব্র্যাকেট প্রকাশের traditionalতিহ্যগত ব্যাখ্যা পেতে, আপনি 'সি' মানের সাথে LC_ALL এনভায়রনমেন্ট ভেরিয়েবল সেট করে 'সি' স্থানীয় ব্যবহার করতে পারেন।
বর্ণনা করা:
$ case B in [a-c]) echo YES;; *) echo NO;; esac
YES
$ LC_ALL=C; case B in [a-c]) echo YES;; *) echo NO;; esac
NO
সুতরাং, যা ঘটে তা হল আপনার লোকালে (যা তা নয় C
) [a-c]
আসলে [aAbBcC]
। এজন্য আপনার পরিবর্তে @ কারেল দ্বারা প্রস্তাবিত পসিক্স অক্ষর ক্লাসগুলি ব্যবহার করা উচিত ।