ব্লক হলে এটি দেখুন:
#!/bin/bash
str="m.m"
if [[ "${str}" =~ "m\.m" ]]; then
echo "matched"
else
echo "not matched"
exit 1
fi
exit 0
এটি "ম্যাচ করা" মুদ্রণ করা উচিত, তবে তা হয় না। কোথায় আমি ভুল যাচ্ছি?
ব্লক হলে এটি দেখুন:
#!/bin/bash
str="m.m"
if [[ "${str}" =~ "m\.m" ]]; then
echo "matched"
else
echo "not matched"
exit 1
fi
exit 0
এটি "ম্যাচ করা" মুদ্রণ করা উচিত, তবে তা হয় না। কোথায় আমি ভুল যাচ্ছি?
উত্তর:
রেজেেক্স ম্যাচে আপনার উদ্ধৃতি অপসারণ করতে হবে।
if [[ ${str} =~ m\.m ]]; then
বাশ ম্যান পৃষ্ঠা থেকে:
[...] অতিরিক্ত বাইনারি অপারেটর, = ~, == এবং! = এর একই প্রাধান্য সহ উপলব্ধ। এটি ব্যবহার করা হলে, অপারেটরের ডানদিকে স্ট্রিংকে একটি বর্ধিত নিয়মিত এক্সপ্রেস সায়ন হিসাবে বিবেচনা করা হয় এবং তদনুসারে ম্যাচটি করা হয় (রেগেক্স (3) হিসাবে)। যদি স্ট্রিংটি প্যাটার্নের সাথে মেলে এবং অন্যথায় 1টি ফেরতের মান হয়। যদি নিয়মিত ভাবটি সিনট্যাক্টিক্যালি ভুল হয় তবে শর্তসাপেক্ষ এক্সপ্রেশনটির রিটার্ন মান 2 হয় If শেল বিকল্প নোকাসেম্যাচ সক্ষম করা থাকলে, বর্ণমালা অক্ষরের ক্ষেত্রে বিবেচনা না করে ম্যাচটি সম্পাদিত হয়। প্যাটার্নটির যে কোনও অংশই স্ট্রিং হিসাবে মিলতে বাধ্য করার জন্য উদ্ধৃত করা যেতে পারে।
উদ্ধৃতিগুলির সাথে, আপনি ভাল-পুরাতন স্ট্রিং মেলা ব্যবহার করছেন।
প্যাটার্নে আপনার যদি ফাঁকির প্রয়োজন হয় তবে কেবল তাদের ছেড়ে দিন:
str="m m"
if [[ ${str} =~ m\ +m ]]; then
\ ।
${str} =~ "needle"[0-9]{1}আমি ব্যবহার করব বা ব্যবহার করব ${str} =~ needle[0-9]{1}?