ویژگی تصویر

دستور getopts در لینوکس

  /  لینوکس   /  دستور getopts در لینوکس
بنر تبلیغاتی الف
لینوکس - linux

در این بخش به بررسی دستور getopts در لینوکس می پردازیم، در محیط خط فرمان لینوکس، اسکریپت‌های شل به عنوان یکی از قدرتمندترین ابزارها برای انجام وظایف خودکارسازی و مدیریت سیستم شناخته می‌شوند. یکی از نیازهای اصلی در نوشتن اسکریپت‌ها، مدیریت ورودی‌ها و پارامترهایی است که از طریق خط فرمان به آن‌ها ارسال می‌شوند. این ورودی‌ها معمولاً به عنوان آرگومان‌های خط فرمان وارد می‌شوند و اسکریپت باید بتواند آن‌ها را به درستی پردازش کند. برای این کار، لینوکس ابزارها و دستورات مختلفی را ارائه می‌دهد. یکی از این ابزارها دستور getopts است که به شما اجازه می‌دهد تا به راحتی آرگومان‌ها و آپشن‌های ورودی خط فرمان را در اسکریپت‌های شل مدیریت کنید.

getopts یک ابزار قدرتمند برای پردازش آرگومان‌ها و گزینه‌های ورودی است. این دستور به شما کمک می‌کند تا ورودی‌هایی که کاربر به اسکریپت می‌دهد را به صورت منظم و با استانداردهای مشخص بررسی و پردازش کنید. با استفاده از این ابزار می‌توانید ورودی‌های مختلفی نظیر فلگ‌ها (مثل -a یا -b) و پارامترهایی همراه آن‌ها (مثل -f filename) را به راحتی دریافت کنید و در برنامه خود از آن‌ها استفاده نمایید. در این مقاله، به بررسی دقیق نحوه کار با getopts، جزئیات استفاده از آن و مثال‌هایی عملی خواهیم پرداخت تا به شما کمک کنیم از این دستور به درستی در اسکریپت‌های خود بهره ببرید.

دستور getopts در لینوکس چیست؟

getopts یک ابزار داخلی شل است که به منظور پردازش آرگومان‌ها و گزینه‌های خط فرمان مورد استفاده قرار می‌گیرد. این دستور به ویژه برای اسکریپت‌هایی مفید است که نیاز به دریافت ورودی‌های چندگانه از کاربر دارند و باید بتوانند این ورودی‌ها را به صورت دقیق مدیریت کنند. برخلاف روش‌های دستی پردازش ورودی‌ها (مثل استفاده از $1، $2 و غیره)، getopts این کار را بسیار ساده‌تر و حرفه‌ای‌تر می‌کند. این دستور به شما این امکان را می‌دهد تا آرگومان‌ها را به صورت ساده و بهینه تحلیل کنید و به کاربر اجازه دهید از فلگ‌ها و آپشن‌های مختلف استفاده کند.

ساختار کلی دستور getopts

دستور getopts معمولاً به این شکل استفاده می‌شود:

getopts options variable
  • options: این قسمت شامل لیستی از فلگ‌ها و آپشن‌هایی است که می‌خواهید در اسکریپت پردازش کنید.
  • variable: این متغیر، نام متغیری است که نتیجه بررسی فلگ یا آپشن در آن ذخیره می‌شود.

مثال زیر یک نمونه ساده از استفاده از getopts را نشان می‌دهد:

#!/bin/bash
while getopts "abf:" opt; do
  case $opt in
    a)
      echo "Option a triggered."
      ;;
    b)
      echo "Option b triggered."
      ;;
    f)
      echo "File name: $OPTARG"
      ;;
    \?)
      echo "Invalid option."
      ;;
  esac
done

در این مثال، اسکریپت ورودی‌هایی مانند -a، -b و -f filename را پردازش می‌کند. اگر کاربر از آپشن -f استفاده کند، مقدار بعد از آن به عنوان نام فایل در متغیر $OPTARG ذخیره می‌شود.

نحوه کار getopts با فلگ‌ها

فلگ‌ها معمولاً به صورت کوتاه (مثل -a یا -b) به اسکریپت ارسال می‌شوند. getopts به شما اجازه می‌دهد تا فلگ‌های چندگانه را با هم ترکیب کرده و به راحتی پردازش کنید. به عنوان مثال، در مثال بالا، فلگ‌های -a و -b بدون هیچ پارامتری استفاده می‌شوند و تنها وجود آن‌ها در ورودی بررسی می‌شود.

مثال: پردازش فلگ‌ها

بیایید به یک مثال ساده دیگر نگاهی بیندازیم که فقط فلگ‌ها را پردازش می‌کند:

#!/bin/bash
while getopts "xyz" opt; do
  case $opt in
    x)
      echo "Option x is set."
      ;;
    y)
      echo "Option y is set."
      ;;
    z)
      echo "Option z is set."
      ;;
    \?)
      echo "Unknown option: -$OPTARG"
      ;;
  esac
done

در این اسکریپت، فلگ‌های -x، -y و -z پردازش می‌شوند. اگر کاربر یکی از این فلگ‌ها را وارد کند، پیام مربوطه چاپ می‌شود. اگر فلگ ناشناخته‌ای وارد شود، پیام خطا چاپ خواهد شد.

نحوه کار getopts با آپشن‌ها و پارامترها

گاهی اوقات، شما به ورودی‌های پیچیده‌تری نیاز دارید. برای مثال، ممکن است بخواهید کاربر نام فایلی را به همراه یک فلگ خاص وارد کند. در چنین مواردی، getopts به شما این امکان را می‌دهد تا از آپشن‌هایی استفاده کنید که به پارامتر نیاز دارند. برای این کار، شما در بخش options بعد از فلگ مربوطه، یک دونقطه (:) قرار می‌دهید تا نشان دهید که این فلگ باید پارامتری داشته باشد.

مثال: پردازش آپشن‌های دارای پارامتر

در این مثال، فلگ -f باید یک پارامتر (نام فایل) دریافت کند:

#!/bin/bash
while getopts "f:" opt; do
  case $opt in
    f)
      echo "File name: $OPTARG"
      ;;
    \?)
      echo "Invalid option."
      ;;
  esac
done

در اینجا، اگر کاربر -f filename را وارد کند، نام فایل در متغیر $OPTARG ذخیره شده و چاپ می‌شود. توجه داشته باشید که اگر کاربر فراموش کند پارامتری برای -f وارد کند، getopts به طور خودکار خطا تولید می‌کند.

ترکیب فلگ‌ها و آپشن‌ها در getopts

شما می‌توانید به راحتی فلگ‌ها و آپشن‌ها را با هم ترکیب کرده و از getopts برای پردازش انواع مختلفی از ورودی‌ها استفاده کنید. در مثال زیر، اسکریپت چندین فلگ و آپشن را همزمان پردازش می‌کند:

#!/bin/bash
while getopts "abf:" opt; do
  case $opt in
    a)
      echo "Option a triggered."
      ;;
    b)
      echo "Option b triggered."
      ;;
    f)
      echo "File name: $OPTARG"
      ;;
    \?)
      echo "Invalid option."
      ;;
  esac
done

در این مثال، اسکریپت فلگ‌های -a، -b و آپشن -f را پردازش می‌کند. کاربر می‌تواند همزمان چندین فلگ را وارد کند. برای مثال، می‌تواند ./script.sh -a -f myfile را اجرا کند که هر دو آپشن -a و -f را پردازش خواهد کرد.

مدیریت خطاها در getopts

یکی از ویژگی‌های مفید getopts، قابلیت مدیریت خطاها است. اگر کاربر ورودی نامعتبری وارد کند یا پارامتر مورد نیاز را نادیده بگیرد، getopts به طور خودکار پیغام خطا ایجاد می‌کند. شما می‌توانید این رفتار را به دلخواه خود تنظیم کنید.

به عنوان مثال، اگر بخواهید رفتار اسکریپت در صورت ورود آپشن‌های نامعتبر را بهبود دهید، می‌توانید از کد زیر استفاده کنید:

#!/bin/bash
while getopts ":abf:" opt; do
  case $opt in
    a)
      echo "Option a triggered."
      ;;
    b)
      echo "Option b triggered."
      ;;
    f)
      echo "File name: $OPTARG"
      ;;
    \?)
      echo "Error: Invalid option -$OPTARG" >&2
      ;;
    :)
      echo "Error: Option -$OPTARG requires an argument." >&2
      exit 1
      ;;
  esac
done

در اینجا، اگر کاربر یک آپشن نامعتبر وارد کند، پیام خطایی به همراه فلگ نامعتبر به کاربر نمایش داده می‌شود. همچنین اگر کاربر پارامتر لازم برای یک آپشن را وارد نکند، پیام خطایی به او نمایش داده و اسکریپت با کد خروجی 1 متوقف می‌شود.

دستور getopts یک ابزار قدرتمند و انعطاف‌پذیر برای پردازش ورودی‌های خط فرمان در اسکریپت‌های شل است. این دستور به شما اجازه می‌دهد تا به راحتی فلگ‌ها و آپشن‌های ورودی را مدیریت کرده و اسکریپت‌های خود را کاربرپسندتر کنید. با استفاده از getopts می‌توانید به سرعت ورودی‌های پیچیده‌ای مانند نام فایل‌ها و پارامترهای مختلف را پردازش کرده و از کاربر بخواهید آن‌ها را به درستی وارد کند. این دستور نه تنها کار شما را ساده‌تر می‌کند، بلکه کمک می‌کند تا اسکریپت‌های شما حرفه‌ای‌تر و قابل مدیریت‌تر باشند.

منابع

  • Bash Reference Manual
  • Linux man pages

آیا این مطلب برای شما مفید بود ؟

خیر
بله
بنر تبلیغاتی ج