منبع اصلی نوشتار زیر در این لینک قرار دارد

پرسش و پاسخ شماره ۴۱


پرسش و پاسخ‌های رایج Bash  در Greg\'s Wiki

پرسش و پاسخ شماره ۴۱

چطور می‌توانم تعیین نمایم که آیا یک متغیر شامل یک زیر رشته هست؟

در BASH:

  # Bash
  if [[ $foo = *bar* ]]

مورد فوق کمابیش در تمام نگارشهای Bash کار می‌کند. Bash نگارش 3 (و بالاتر) همچنین عبارتهای منظم را هم مجاز می‌داند:

  # Bash
  my_re=\'ab*c\'
  if [[ $foo =~ $my_re ]]   # bash 3, matches abbbbcde, or ac, etc.

برای اشارات بیشتر در مورد دستکاری رشته‌ها در Bash، پرسش و پاسخ شماره 100 را ببینید.

اگر شما به جای Bash در BourneShell برنامه نویسی می‌کنید، ترکیب دستوری قابل حمل‌تر(اما نا زیباتری) وجود دارد:

  # Bourne
  case \"$foo\" in
    *bar*) .... ;;
  esac

case به شما اجازه می‌دهد متغیرها را در مقابل الگوهای globbingشکل (به انضمام globهای توسعه یافته) در صورتی که پوسته شما آنها را ارائه می‌کند،مطابقت دهید. اگر شما به روش قابل حمل برای مطابقت متغیرها در مقابل عبارات منظم نیاز دارید، از grep یا egrep استفاده کنید.

  # Bourne
  if echo \"$foo\" | grep bar >/dev/null 2>&1; then ...


CategoryShell

پرسش وپاسخ 41 (آخرین ویرایش ‎ 2010-11-29 22:24:01 ‎ توسط GreyCat)




به سیاره لینوکس امتیاز دهید

به اين صفحه امتياز دهيد