@ ওপ,
গ্লোব পেট্রনগুলি কেবল ফাইলের নামের জন্যই ব্যবহৃত হয় না?
না, "গ্লোব" প্যাটার্নটি কেবল ফাইলের নামের জন্যই ব্যবহৃত হয় না। আপনি স্ট্রিংগুলির সাথে তুলনা করতে এটি ব্যবহার করেন। আপনার উদাহরণগুলিতে, আপনি স্ট্রিংগুলির নিদর্শনগুলির জন্য কেস / এস্যাক ব্যবহার করতে পারেন।
gg=svm-grid-ch
case "$gg" in
*grid* ) echo "found";;
esac
case "$gg" in ????grid*) echo "found";; esac
case "$gg" in s???grid*) echo "found";; esac
ব্যাশে, কখন গ্লোব প্যাটার্ন ব্যবহার করবেন এবং কখন নিয়মিত এক্সপ্রেশন ব্যবহার করবেন? ধন্যবাদ!
রেগেক্স "গ্লোব প্যাটার্নগুলি" এর তুলনায় আরও বহুমুখী এবং "সুবিধাজনক", তবে আপনি যদি এমন জটিল কাজগুলি না করেন যা "গ্লোব্বিং / এক্সটেন্ডেড গ্লোব্বিং" সহজেই সরবরাহ করতে না পারে, তবে রেজেেক্স ব্যবহার করার দরকার নেই। রেগেক্স বাশ <3.2 (ডেনিস হিসাবে উল্লিখিত) সংস্করণে সমর্থিত নয়, তবে আপনি এখনও বর্ধিত গ্লোব্বিং ব্যবহার করতে পারেন (সেট করে extglob)। বর্ধিত globbing জন্য, দেখুন এখানে এবং কিছু সহজ উদাহরণ এখানে ।
ওপি-র জন্য আপডেট: উদাহরণস্বরূপ, দুটি অক্ষর (বিন্দু "।" মানে 1 চর) দিয়ে শুরু হওয়া ফাইলগুলি খুঁজে বের করার পরে রেজেক্স ব্যবহার করে "জি" অনুসরণ করা হবে
যেমন আউটপুট
$ shopt -s dotglob
$ ls -1 *
abg
degree
..g
$ for file in *; do [[ $file =~ "..g" ]] && echo $file ; done
abg
degree
..g
উপরের দিকে, ফাইলগুলি মিলছে কারণ তাদের নামগুলিতে "জি" এর পরে দুটি অক্ষর রয়েছে। (অর্থাত্ ..g)
গ্লোব্বিংয়ের সমতুল্য এই জাতীয় কিছু হবে: ( অর্থের জন্য রেফারেন্সটি দেখুন ?এবং *)
$ for file in ??g*; do echo $file; done
abg
degree
..g