آموزش اسکریپت نویسی

آموزش اسکریپت نویسی پوسته گنو-لینوکس

آموزش اسکریپت نویسی

آموزش اسکریپت نویسی پوسته گنو-لینوکس

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

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

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

در 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)