وبلاگ رسانگار
با ما حرفه ای باشید

سرور مجازی NVMe

چگونه می توانم استدلال را در یک اسکریپت Bash پاس کنم؟

0 6
زمان لازم برای مطالعه: 4 دقیقه


اکثر کاربران لینوکس مینت 20 هنگام ارائه یک آرگومان در a گیر می کنند bash اسکریپت شما می توانید آرگومان ها را به هر کدام منتقل کنید bash اسکریپت زمانی که اجرا می شود. چندین راه ساده و مفید برای ارسال آرگومان ها در a وجود دارد bash اسکریپت در این راهنمای مقاله، ما به شما در مورد برخی از راه‌های بسیار آسان برای عبور و استفاده از استدلال در خود آگاه می‌کنیم bash اسکریپت ها

تصویب آرگومان ها با استفاده از متغیرهای پیش فرض:

یک فایل جدید با هر نامی با استفاده از دستور “touch” ایجاد کنید، به عنوان مثال، “file.sh”.

$ دست زدن به نام فایل

چگونه می توانم استدلال را در یک اسکریپت Bash پاس کنم؟

این فایل تازه ایجاد شده را باز کنید و تعدادی اضافه کنید bash اسکریپت به آن من برخی از متغیرهای پیش فرض را اضافه کرده ام، به عنوان مثال “$1″، “$2″، و “$3” در نتیجه. هر استدلالی که از طریق آن منتقل خواهد شد terminal در متغیرهای ذکر شده ذخیره خواهد شد.

چگونه می توانم استدلال را در یک اسکریپت Bash پاس کنم؟چگونه می توانم استدلال را در یک اسکریپت Bash پاس کنم؟

شما باید این فایل را با استفاده از دستور “./” و به دنبال آن چند آرگومان اجرا کنید. همانطور که در تصویر می بینید که وقتی آرگومان ها را پاس کردم، یک خطا رخ می دهد: Permission denied. دلیلش این است که این فایل حقوق اجرایی ندارد.

$ ./آرگومان filename argument1 argument2

بنابراین برای اعطای حقوق اجرایی به این فایل، از دستور sudo “chmod” برای این کار استفاده کنید.

$ سودو chmod +x نام فایل

چگونه می توانم استدلال را در یک اسکریپت Bash پاس کنم؟چگونه می توانم استدلال را در یک اسکریپت Bash پاس کنم؟

حالا دوباره با استفاده از دستور بالا فایل را اجرا کنید. این بار استدلال های مختلفی ارائه کرده ام. مشاهده خواهید کرد که آرگومان های تازه تصویب شده در متغیرهای پیش فرض ذخیره می شوند.

چگونه می توانم استدلال را در یک اسکریپت Bash پاس کنم؟چگونه می توانم استدلال را در یک اسکریپت Bash پاس کنم؟

عبور نام اسکریپت پوسته به عنوان آرگومان:

حالا با استفاده از همان فایل قدیمی “file.sh” با کمی تغییر در متغیرهای پیش فرض آن. همانطور که نشان داده شده است باید متغیر “$0” را در اسکریپت اضافه کنید.

چگونه می توانم استدلال را در یک اسکریپت Bash پاس کنم؟چگونه می توانم استدلال را در یک اسکریپت Bash پاس کنم؟

با اجرای همان دستور اسکریپت پوسته “./”، نام اسکریپت پوسته شما، به عنوان مثال “./filename” در متغیر “$0” به عنوان آرگومان ذخیره می شود.

چگونه می توانم استدلال را در یک اسکریپت Bash پاس کنم؟چگونه می توانم استدلال را در یک اسکریپت Bash پاس کنم؟

انتقال آرگومان ها به عنوان آرایه به متغیر:

با شروع با همان فایل “file.sh”، باید چند خط اضافی در اسکریپت قدیمی اضافه کنید. متغیری به نام آرایه را اعلام کنید. یک متغیر پیش فرض “$@” اضافه کنید که آرگومان های وارد شده توسط کاربر را به عنوان یک آرایه ذخیره می کند. این آرگومان ها به متغیر “array” تجزیه خواهند شد. خط آخر تمام آرگومان های متغیر “آرایه” را که بر اساس شماره شاخص مرتب شده اند نمایش می دهد.

پیشنهاد می‌کنیم بخوانید:  استفاده از فرمان Exec در اسکریپت های شل

چگونه می توانم استدلال را در یک اسکریپت Bash پاس کنم؟چگونه می توانم استدلال را در یک اسکریپت Bash پاس کنم؟

اسکریپت پوسته “./” را اجرا کنید. خواهید دید که آرگومان ها یا مقادیر ذخیره شده به عنوان یک آرایه در “$@” تجزیه شده به متغیر “array” را نمایش می دهد، اما نام اسکریپت پوسته را در ” دوم نشان نمی دهد.echo” بیانیه. خروجی زیر را خواهید داشت.

$ ./آرگومان filename argument1 argument2

چگونه می توانم استدلال را در یک اسکریپت Bash پاس کنم؟چگونه می توانم استدلال را در یک اسکریپت Bash پاس کنم؟

از همان فایل با همان اسکریپت استفاده کنید. فقط آرایه ${را حذف کنید[3]}” از خط آخر به وضوح در تصویر.

چگونه می توانم استدلال را در یک اسکریپت Bash پاس کنم؟چگونه می توانم استدلال را در یک اسکریپت Bash پاس کنم؟

پس از اجرای دستور “./” خروجی مشابهی را که در مثال بالا دریافت کردید بدون تغییر خواهید دید.

چگونه می توانم استدلال را در یک اسکریپت Bash پاس کنم؟چگونه می توانم استدلال را در یک اسکریپت Bash پاس کنم؟

همچنین می توانید با جایگزین کردن آخرین خط از همان نتیجه را دریافت کنید bash فیلمنامه با یک کلمه شما فقط باید “$@” را در آن اضافه کنید echo بیانیه، و آرگومان های موجود در این آرایه متغیر را نمایش می دهد.

چگونه می توانم استدلال را در یک اسکریپت Bash پاس کنم؟چگونه می توانم استدلال را در یک اسکریپت Bash پاس کنم؟

بنابراین با اجرای دوباره دستور “./”، همان نتایج را خواهید گرفت.

چگونه می توانم استدلال را در یک اسکریپت Bash پاس کنم؟چگونه می توانم استدلال را در یک اسکریپت Bash پاس کنم؟

تعداد کل آرگومان های پاس شده را بررسی کنید:

برعکس، اگر می خواهید تعداد کل آرگومان های ارسال شده توسط کاربر را بدانید، می توانید این کار را نیز انجام دهید. برای این منظور، فقط باید «$@» را با «$#» در «» جایگزین کنید.echo”.

چگونه می توانم استدلال را در یک اسکریپت Bash پاس کنم؟چگونه می توانم استدلال را در یک اسکریپت Bash پاس کنم؟

دوباره با اجرای دستور “./”، اکنون کل آرگومان های ارسال شده به اسکریپت را خواهید دید. در مورد ما، 3 آرگومان به عنوان مقدار ارسال می شود.

چگونه می توانم استدلال را در یک اسکریپت Bash پاس کنم؟چگونه می توانم استدلال را در یک اسکریپت Bash پاس کنم؟

ایجاد خط به خط خروجی آرگومان ها:

یک فایل جدید “test.sh” در فهرست اصلی ایجاد کنید. اضافه کردن bash اسکریپت همانطور که نشان داده شده است.

چگونه می توانم استدلال را در یک اسکریپت Bash پاس کنم؟چگونه می توانم استدلال را در یک اسکریپت Bash پاس کنم؟

حالا همان دستور قدیمی را با آرگومان های مختلف اجرا کنید. ابتدا خطا را مشاهده خواهید کرد: Permission denied.

چگونه می توانم استدلال را در یک اسکریپت Bash پاس کنم؟چگونه می توانم استدلال را در یک اسکریپت Bash پاس کنم؟

برای اعطای امتیازات sudo به این فایل باید دستور “chmod” را اجرا کنید. پس از آن، دوباره فرمان پوسته اسکریپت “./” را اجرا کنید. و شما خط به خط خروجی آرگومان های مرتب شده را دریافت خواهید کرد.

چگونه می توانم استدلال را در یک اسکریپت Bash پاس کنم؟چگونه می توانم استدلال را در یک اسکریپت Bash پاس کنم؟

محدود کردن متغیر از طریق Argument Index Number:

اگر می خواهید متغیر را با استفاده از شماره شاخص آن محدود کنید، می توانید این کار را خیلی راحت انجام دهید. بعد از علامت «$» براکت‌های فرفری اضافه کنید و شماره شاخص آرگومان را که می‌خواهید قبل از آرگومان‌های دیگر نمایش دهید، اضافه کنید.

پیشنهاد می‌کنیم بخوانید:  باش Getopts

چگونه می توانم استدلال را در یک اسکریپت Bash پاس کنم؟چگونه می توانم استدلال را در یک اسکریپت Bash پاس کنم؟

اگر آرگومان های ارائه شده توسط کاربران کمتر از عدد شاخص ارائه شده در متغیر حد باشد، یک مقدار آرگومان خالی دریافت خواهید کرد. به عنوان نمونه، من 4 آرگومان ارائه کرده ام، اما مقدار آرگومان “05” را برای نمایش داده ام. در این شرایط متغیر خالی نمایش داده می شود زیرا آرگومان پنجم ارسال نشده است.

چگونه می توانم استدلال را در یک اسکریپت Bash پاس کنم؟چگونه می توانم استدلال را در یک اسکریپت Bash پاس کنم؟

اما وقتی تعداد آرگومان های مساوی یا بیشتر را در دستور ارسال کنید، مقداری را که در نتیجه نشان داده شده است، دریافت خواهید کرد.

چگونه می توانم استدلال را در یک اسکریپت Bash پاس کنم؟چگونه می توانم استدلال را در یک اسکریپت Bash پاس کنم؟

بررسی آرگومان های ارزش خاص:

یک فایل جدید با نام “Check.sh” در فهرست اصلی خود ایجاد کنید. همان را اضافه کنید bash اسکریپت همانطور که در تصویر زیر نشان داده شده است. در این اسکریپت، ما یک متغیر Var برای ذخیره مقدار آرگومان ارسال شده توسط کاربر داریم. سپس یک عبارت “if” داریم که بررسی می کند که آیا مقدار آرگومان مطابقت دارد یا خیر. اگر مقدار آرگومان با مقدار ارائه شده در پرانتز مطابقت داشته باشد، اولین “echoبیانیه اجرا خواهد شد. اگر مقدار مطابقت نداشت، دومی “echoبیانیه اجرا خواهد شد.

چگونه می توانم استدلال را در یک اسکریپت Bash پاس کنم؟چگونه می توانم استدلال را در یک اسکریپت Bash پاس کنم؟

وقتی دستور shell script را اجرا می کنیم، با خطا مواجه می شود. با استفاده از دستور “chmod” می توانیم این خطا را اصلاح کنیم.

چگونه می توانم استدلال را در یک اسکریپت Bash پاس کنم؟چگونه می توانم استدلال را در یک اسکریپت Bash پاس کنم؟

پس از آن، اسکریپت پوسته را برای فایل خاص با مقداری آرگومان اجرا کنید. در مورد ما، “اقسا” را به عنوان یک مقدار آرگومان ارائه کرده ایم که همان مقدار نمایش داده شده در پرانتز است. بنابراین bash اسکریپت اول را اجرا خواهد کردecho” بیانیه همانطور که نشان داده شده است.

چگونه می توانم استدلال را در یک اسکریپت Bash پاس کنم؟چگونه می توانم استدلال را در یک اسکریپت Bash پاس کنم؟

از سوی دیگر، اگر مقادیر آرگومان های مختلف را در اسکریپت پوسته ارائه کنید، “دیگر” را نمایش می دهد.echo” بیانیه. در اینجا من “Rimsha” را به عنوان یک مقدار آرگومان اضافه کرده ام که با مقدار ارائه شده در دستور if متفاوت است. بنابراین bash اسکریپت دوم را اجرا خواهد کردecho” بیانیه.

چگونه می توانم استدلال را در یک اسکریپت Bash پاس کنم؟چگونه می توانم استدلال را در یک اسکریپت Bash پاس کنم؟

نتیجه:

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

برای نگارش بخشهایی از این متن ممکن است از ترجمه ماشینی یا هوش مصنوعی GPT استفاده شده باشد
لطفا در صورت وجود مشکل در متن یا مفهوم نبودن توضیحات، از طریق دکمه گزارش نوشتار یا درج نظر روی این مطلب ما را از جزییات مشکل مشاهده شده مطلع کنید تا به آن رسیدگی کنیم

زمان انتشار: 1402-12-31 05:59:03

امتیاز شما به این مطلب
دیدگاه شما در خصوص مطلب چیست ؟

آدرس ایمیل شما منتشر نخواهد شد.

لطفا دیدگاه خود را با احترام به دیدگاه های دیگران و با توجه به محتوای مطلب درج کنید