راهنمای مبتدیان به BASH - پارامترهای ورودی

به بخش دوم راهنمای مبتدیان به سری BASH خوش آمدید، که منحصر به فرد است و تنها آموزش BASH توسط یک مبتدی برای مبتدیان نوشته شده است.

خوانندگان این راهنما دانش خود را به عنوان دانش من ایجاد می کنند و امیدوارم با پایان دادن به آن همه بتوانیم اسکریپت های نسبتا هوشمندانه را بنویسیم.

هفته گذشته من برای اولین بار اسکریپت خود را ساختم که به سادگی کلمات "Hello World" را نمایش داد. این موضوعات شامل مواردی مانند ویراستاران متن، چگونگی باز کردن پنجره ترمینال، جایی برای قرار دادن اسکریپت ها، چگونگی نمایش کلمات "Hello World" و برخی نکات برجسته تر در خصوص کاراکترهای فرار از قبیل نقل قول ها ("") می باشد.

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

پارامتر چیست؟

در "Hello World" اسکریپت از آخرین آموزش آن همه ایستا بود. این اسکریپت واقعا کار خوبی نکرد.

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

در مورد یک اسکریپت که فردی را که آن را اجرا می کند، خوش آمد می گوید؟ به جای گفتن "Hello World"، "Hello Gary"، "Hello Tim" یا "Hello Dolly" می گویند.

بدون توانایی پذیرش پارامترهای ورودی، ما باید سه اسکریپت «hellogary.sh»، «hellotim.sh» و «hellodolly.sh» را بنویسیم.

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

برای انجام این کار یک پنجره ترمینال (CTRL + ALT + T) را باز کنید و با تایپ کردن موارد زیر ( در مورد دستور cd ) به پوشه اسکریپت خود بروید

اسکریپت سی دی

ایجاد یک اسکریپت جدید به نام greetme.sh با تایپ کردن موارد زیر: ( در مورد دستور لمس )

greetme.sh را لمس کن

اسکریپت را در ویرایشگر مورد علاقه خود را با تایپ کردن موارد زیر باز کنید: ( درباره دستور nano )

nano greetme.sh

متن زیر را در nano وارد کنید:

#! / bin / bash echo "hello $ @"

CTRL و O را برای ذخیره فایل و سپس CTRL و X برای بستن فایل فشار دهید.

برای اجرای اسکریپت در خط فرمان با نام خود وارد کنید.

sh greetme.sh

اگر من اسکریپت را با نام من اجرا کنم، کلمات "Hello Gary" را نمایش می دهد.

خط اول خط #! / bin / bash است که برای شناسایی فایل به عنوان یک اسکریپ bash استفاده می شود.

خط دوم با استفاده از عبارت echo برای تکرار کلمه hello و سپس علامت $ @ عجیب و غریب وجود دارد. ( درباره دستور echo )

$ @ برای هر پارامتر که با نام اسکریپت وارد شده نمایش داده می شود. بنابراین اگر شما تایید "sh greetme.sh tim" کلمات "hello tim" نمایش داده می شود. اگر شما "greetme.sh tim smith" را تایپ کرده اید، سپس کلمات "hello tim smith" نمایش داده می شود.

برای اسکریپت greetme.sh خوب است که فقط با استفاده از نام فقط سلام بگویم. هیچ کس نمی گوید "وقتی که آنها با من ملاقات می کنند،" سلام من "می گویند" سلام سلام "

اجازه دهید اسکریپت را تغییر دهیم تا فقط از پارامتر اول استفاده شود. اسکریپت greetme.sh را در nano با تایپ کردن موارد زیر باز کنید:

nano greetme.sh

اسکریپت را تغییر دهید تا به صورت زیر خوانده شود:

#! / bin / bash echo "hello $ 1"

با فشار دادن CTRL و O، اسکریپت را ذخیره کنید و سپس با فشار دادن CTRL و X، آن را بیرون بکشید.

اسکریپت را اجرا کنید همانطور که در زیر نشان داده شده است (نام من را با خودتان جایگزین کنید):

sh greetme.sh gary newell

وقتی اسکریپت را اجرا می کنید، به سادگی می گوید "سلام سلام" (و یا امیدوارم "سلام" و هر نام شما.

1 بعد از نماد $ اساسا به فرمان echo می گوید، از پارامتر اول استفاده کنید. اگر $ 1 را با $ 2 جایگزین کنید، "hello newell" (یا هر نام خانوادگی شما) نمایش داده خواهد شد.

در حقیقت اگر شما $ 2 را با $ 3 جایگزین کردید و اسکریپت را تنها با 2 پارامتر اجرا کردید، خروجی به سادگی "Hello" است.

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

برای نمایش تعدادی از پارامترها، اسکریپت greetme.sh را باز کنید (nano greetme.sh) و متن را به صورت زیر اصلاح کنید:

#! / bin / bash echo "شما نامهای $ # را وارد کردید" echo "hello $ @"

CTRL و O را فشار دهید تا اسکریپت را ذخیره کنید و CTRL و X برای خروج از نانو.

$ # در خط 2 تعداد پارامترهای وارد شده را نشان می دهد.

تا کنون همه اینها رمانتیک بوده اما بسیار مفید نیستند. چه کسی نیاز به یک اسکریپت دارد که به سادگی "سلام" را نمایش می دهد؟

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

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

با توجه به این همه، برخی از پارامترهای دیگر ورودی مفید است که ایده خوب آن است که بدانیم و همه آنها را در یک کد مختص کد قرار خواهیم داد.

اسکریپت greetme.sh را باز کنید و آن را به صورت زیر تغییر دهید:

#! / bin / bash echo "نام فایل: $ 0" echo "شناسه پردازش: $$" echo "---------------------------- --- "echo" شما وارد $ # نام "echo" hello $ @ "

CTRL و O را فشار دهید تا فایل را ذخیره کنید و CTRL و X برای خروج.

اکنون اسکریپت را اجرا کنید (با نام خود جایگزین کنید).

sh greetme.sh

این بار اسکریپت زیر را نمایش می دهد:

نام فایل: greetme.sh شناسه پردازش: 18595 ------------------------------ شما 2 نام را وارد کنید hello gary newell

$ 0 در خط اول اسکریپت نمایش اسکریپت شما را اجرا می کند. توجه داشته باشید که دلار صفر و نه دلار است.

$$ در خط دوم نمایش شناسه فرآیند اسکریپت شما را اجرا می کند. چرا این مفید است؟ اگر شما در حال اجرا یک اسکریپت در پیش زمینه می توانید آن را به سادگی با فشار دادن CTRL و C لغو کنید. اگر اسکریپت را در پسزمینه اجرا کردید و شروع به حلقه کردید و همان کاری را انجام دادید یا شروع کردید باعث آسیب رساندن به سیستم شما شد برای کشتن آن

برای کشتن یک اسکریپت که در پسزمینه اجرا می شود، به شناسه فرآیند اسکریپت نیاز دارید. اگر این اسکریپت فرایند را به عنوان بخشی از خروجی آن ارائه دهد خوب نیست. ( در مورد ps و دستورات کشتن )

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

برای خروجی اسکریپت به یک فایل خروجی بسیار معمول است. برای انجام این کار اسکریپت خود را به صورت زیر اجرا کنید:

sh greetme.sh gary> greetme.log

نماد> در دستور فوق، متن «hello gary» را به یک فایل به نام greetme.log منتقل می کند.

هر بار که شما اسکریپت را با استفاده از نماد>> اجرا می کنید، محتویات فایل خروجی را دوباره بارگذاری می کند. اگر شما ترجیح می دهید به فایل اضافه کنید، جایگزین> with >> شوید.

خلاصه

اکنون باید بتوانید متن را روی صفحه بنویسید و پارامترهای ورودی را قبول کنید.