از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
یک آرگومان نامگذاری شده را در یک اسکریپت Bash ارسال کنید
سرفصلهای مطلب
این command-line مقادیر آرگومان را می توان به دو روش در اسکریپت Bash ارسال کرد. یک راه استفاده از آرگومان های موقعیتی مانند $1، $2، $3 و غیره است. راه دیگر استفاده از آرگومان های نامگذاری شده است. استفاده از آرگومان موقعیتی برای دسترسی به مقادیر آرگومان چندان مفید نیست زیرا به وضوح مشخص نیست که کدام آرگومان موقعیتی حاوی چه نوع داده ای است. اما گزینه معنی دار را می توان با آرگومان نامگذاری شده استفاده کرد که به درک اینکه کدام آرگومان حاوی کدام نوع داده است کمک می کند. استفاده از آرگومان های نامگذاری شده در Bash در این آموزش نشان داده شده است.
کاربرد Getopts و Getopt
هر دو getopt و getopt در Bash برای خواندن مقادیر آرگومان نامگذاری شده استفاده می شوند. اما بین این ابزارها تفاوت وجود دارد. Getopts برای خواندن گزینه های کوتاه مانند -h، -d و غیره استفاده می شود. اما نمی تواند گزینه های طولانی مانند –version، –user و غیره را بخواند. Getopt برای خواندن مقدار گزینه long استفاده می شود. اگر می خواهید جزئیات بیشتری در مورد getopts بدانید، می توانید اینجا را بررسی کنید.
مثال 1: آرگومان های نامگذاری شده را با استفاده از Getopts بخوانید
یک فایل Bash با اسکریپت زیر ایجاد کنید که دو آرگومان نامگذاری شده را با استفاده از getopts که از گزینه های کوتاه پشتیبانی می کنند بخواند. از گزینه های -i و -r برای ارسال مقادیر آرگومان نامگذاری شده در طول اجرای اسکریپت استفاده می شود. سپس، مقدار آرگومان که توسط گزینه -i خوانده میشود، با یک مقدار خاص برای چاپ خروجی بر اساس بررسی میشود روی مقدار تطبیق
در حالی که می گیرد “i:r:” var
انجام دادن
مورد “$var“ که در
من) شناسه=${OPTARG};;
r) معدل=${OPTARG};;
اساک
انجام شده
#چاپ پیام بر اساس روی مقدار شناسه منطبق که در آرگومان ارسال شده است
اگر [[ “$ID“ == “56” ]]; سپس
اکو «میرصابر به دست آورد GPA $“
elif [[ “$ID“ == “34” ]]; سپس
اکو «نیروب احسن به دست آورد GPA $“
دیگر
اکو “شناسنامه نامعتبر است.”
فی
اسکریپت دو بار در خروجی زیر اجرا می شود. اسکریپت بدون هیچ آرگومانی در اولین اجرا اجرا می شود. بنابراین، پیام خطا نمایش داده می شود. اسکریپت با دو آرگومان معتبر با نام در اجرای دوم اجرا می شود. مقادیر قالب بندی شده مقادیر آرگومان نامگذاری شده در خروجی چاپ می شوند:
مثال 2: آرگومان های نامگذاری شده را با استفاده از Getopt بخوانید
یک فایل Bash با اسکریپت زیر ایجاد کنید که دو آرگومان نامگذاری شده را با استفاده از getopt بخواند که از گزینه های طولانی پشتیبانی می کند. گزینه های –email و –pass برای ارسال مقادیر آرگومان نامگذاری شده در طول اجرای اسکریپت استفاده می شوند. مقادیر آرگومان هایی که توسط آرگومان های نامگذاری شده خوانده می شوند در دو متغیر به نام های $Email و $Password ذخیره می شوند. در مرحله بعد، مقادیر این متغیرها با مقادیر خاص مقایسه شده و بر اساس خروجی چاپ می شود روی خروجی مقایسه
#گزینه های دستور getopt را تنظیم کنید
قالب=$(گرفتن -n “0$” -ل “email:,pass:” — — “$@”)
اگر [ $# -lt 3 ]; سپس
اکو “تعداد اشتباهی از آرگومان ها ارسال شده است.”
خروج
فی
ارزیابی تنظیم — “قالب $“
#مقادیر آرگومان را بخوانید
در حالی که [ $# -gt 0 ]
انجام دادن
مورد “$1” که در
–پست الکترونیک) پست الکترونیک=“2 دلار”; تغییر مکان;;
–عبور) کلمه عبور=“2 دلار”; تغییر مکان;;
—) تغییر مکان;;
اساک
تغییر مکان;
انجام شده
#مقادیر آرگومان را با مقدار خاص مقایسه کنید
اگر [[ “$Email“ == “admin@example.com” && “$Password“ == “secretpass” ]]; سپس
اکو “کاربر معتبر”
دیگر
اکو “کاربر نامعتبر”
فی
اسکریپت سه بار در خروجی زیر اجرا می شود. اسکریپت بدون هیچ آرگومانی در اولین اجرا اجرا می شود. بنابراین، پیغام خطای “تعداد اشتباهی از آرگومان ها ارسال شده اند” نمایش داده می شود. اسکریپت با دو مقدار آرگومان در اجرای دوم اجرا می شود اما مقدار آرگومان دوم با مقدار رمز عبور مطابقت ندارد. بنابراین، پیام “کاربر نامعتبر” نمایش داده می شود. این اسکریپت با دو آرگومان معتبر با نام در اجرای سوم اجرا میشود و هر دو مقدار آرگومان با مقادیری که در شرط «if» ارائه شدهاند مطابقت دارند. بنابراین، پیام “کاربر معتبر” نمایش داده می شود.
مثال 3: استدلال نامگذاری شده را بدون Getopts و Getopt بخوانید
یک فایل Bash با اسکریپت زیر ایجاد کنید که سه آرگومان نامگذاری شده را با استفاده از حلقه “while” بخواند. با توجه به اسکریپت، می توان از هر دو گزینه کوتاه و بلند برای ارسال آرگومان های نامگذاری شده در اسکریپت استفاده کرد. -u یا –user، -p یا –pass، و -h یا –host از گزینه ها برای ارسال سه مقدار آرگومان نامگذاری شده در طول اجرای اسکریپت استفاده می شود. سپس مقادیر آرگومان با استفاده از حلقه “while” و فرمان “shift” در سه متغیر خوانده و ذخیره می شوند.
#مقادیر آرگومان را بخوانید
در حالی که [[ “$#” -gt 0 ]]
انجام دادن
مورد 1 دلار که در
-u|–کاربر) کاربر=“2 دلار”; تغییر مکان;;
-پ|–عبور) کلمه عبور=“2 دلار”; تغییر مکان;;
-h|–host) میزبان=“2 دلار”; تغییر مکان;;
اساک
تغییر مکان
انجام شده
#مقادیر آرگومان را چاپ کنید
printf “نام کاربری: $User \nکلمه عبور: $Password \nنام میزبان: $Host\n“
اسکریپت با سه آرگومان معتبر با نام در خروجی زیر اجرا می شود. بنابراین، مقادیر سه آرگومان چاپ می شود:
نتیجه
روش های مختلف استفاده از آرگومان های نامگذاری شده در اسکریپت Bash در این آموزش نشان داده شده است تا به کاربران Bash کمک کند تا بدانند چگونه از آرگومان های نامگذاری شده استفاده کنند.
لطفا در صورت وجود مشکل در متن یا مفهوم نبودن توضیحات، از طریق دکمه گزارش نوشتار یا درج نظر روی این مطلب ما را از جزییات مشکل مشاهده شده مطلع کنید تا به آن رسیدگی کنیم
زمان انتشار: 1402-12-28 19:26:05