Водич за почетници за BASH - Влезни параметри

Добредојдовте во вториот дел од Водичот за почеток на BASH серијата, која е единствена по тоа што е единствениот BASH туториал напишан од почетник за почетници.

Читателите на овој водич ќе го изградат своето знаење, бидејќи го градам моето знаење и се надевам дека до крајот на сето тоа ќе можеме да напишеме некои прилично умен скрипти.

Минатата недела го опфатив креирањето на вашиот прв скрипт кој едноставно ги прикажува зборовите "Hello World". Ги опфаќа теми како што се уредувачи на текст, како да отворат терминален прозорец, каде да ги постават вашите скрипти, како да ги прикажат зборовите "Здраво Светот" и некои пофини точки за белековите како што се цитатите ("").

Оваа недела ќе ги покривам влезните параметри. Постојат и други водичи кои го учат овој вид на работа, но сфаќам дека тие скокаат во некои прилично ниско ниво на работи и можеби обезбедуваат премногу информации.

Што е параметар?

Во сценариото "Hello World" од последното упатство сето тоа беше многу статично. Сценариото воопшто не направи многу.

Како можеме да го подобриме сценариото "Hello World"?

Што е со сценариото што го поздравува лицето кое го води? Наместо да се каже "Здраво Светот" ќе речат "Здраво Гери", "Здраво Тим" или "Здраво Доли".

Без можност да ги прифатиме влезните параметри, ќе треба да напишеме три скрипти "hellogary.sh", "hellotim.sh" и "hellodolly.sh".

Дозволувајќи им на нашите скрипти да читаат влезни параметри, можеме да користиме една скрипта за да го поздравиме секој.

За да го направите ова, отворете го терминалниот прозорец (CTRL + ALT + T) и отидете до папката на скрипти со внесување на следново: ( за командата cd )

cd скрипти

Направете нова скрипта наречена greetme.sh со внесување на следново: ( за команда за допирање )

допрете greetme.sh

Отворете ја скриптата во вашиот омилен уредувач со внесување на следново: ( за нано команда )

nano greetme.sh

Внесете го следниов текст во рамките на нано:

#! / bin / bash echo "Здраво $ @"

Притиснете CTRL и O за да ја зачувате датотеката, а потоа CTRL и X за да ја затворите датотеката.

За да ја стартувате скриптата, внесете го следново во командната линија што го заменува со вашето име.

sh greetme.sh

Ако го користам сценариото со моето име, ги прикажува зборовите "Здраво Гери".

Првата линија ја има линијата #! / Bin / bash која се користи за идентификација на датотеката како bash скрипта.

Втората линија ја користи изјавата за ехо за да го повтори зборот Здраво, а потоа се појавува и чудна ознака $ @. ( за ехо команда )

$ @ Се проширува за да го прикаже секој параметар што е внесен заедно со името на сценариото. Значи, ако го внесете "sh greetme.sh tim", ќе бидат прикажани зборовите "hello tim". Ако го напишете "greetme.sh tim smith" тогаш ќе бидат прикажани зборовите "hello tim smith".

Би можело да биде убаво сценариото greetme.sh само да се поздрави со користење само на првото име. Никој не вели "Здраво Гери Newell", кога ќе се сретнат со мене, тие би можеле да речат "Здраво Гери".

Ајде да го смениме сценариото, така што само го користи првиот параметар. Отворете го скриптот greetme.sh во нано со внесување на следново:

nano greetme.sh

Сменете го сценариото така што ќе го прочитате следново:

#! / bin / bash ехо "здраво $ 1"

Зачувајте го скрипта со притискање на CTRL и O, а потоа излезете со притискање на CTRL и X.

Стартувај скрипта како што е прикажано подолу (заменете го моето име со твое):

sh greetme.sh Гери Newell

Кога ќе го стартувате скриптот, едноставно ќе кажете "здраво" (или, се надевам, "здраво" и што и да е твое име.

1 по симболот $ во основа се вели на командата echo, користете го првиот параметар. Ако го замениш $ 1 со $ 2, тогаш ќе се прикаже "здраво ново" (или што и да е твоето презиме).

Патем, ако сте го замениле 2 $ со 3 $ и го тргнале сценариото со само 2 параметри, излезот едноставно би бил "Здраво".

Можно е да се прикаже и да се справи со бројот на всушност внесени параметри и во подоцнежните упатства ќе покажам како да го користам бројот на параметри за целите на валидација.

За да се прикаже бројот на внесен параметри, отворете го скрипт greetme.sh (nano greetme.sh) и измени го текстот на следниов начин:

#! / bin / bash ехо "внесете $ # имиња" ехо "поздрав $ @"

Притиснете CTRL и O за да го зачувате сценариото и CTRL и X за да излезете од нано.

$ # На втората линија го прикажува бројот на внесени параметри.

Досега сето ова е ново, но не е многу корисно. Кому му е потребна скрипта која едноставно прикажува "здраво"?

Вистинската употреба за ехо изјавите е да обезбеди вербален и значаен излез на корисникот. Ако можете да замислите дека сакате да направите нешто комплицирано што вклучува сериозен број на крцкање и манипулација со датотеки / папки, би било корисно да се прикаже на корисникот што се случува на секој чекор од патот.

Спротивно на тоа, влезните параметри го прават вашето сценарио интерактивно. Без влезни параметри ќе ви требаат десетици скрипти кои прават многу слични работи, но со малку различни имиња.

Со сето ова на ум има некои други корисни влез параметри дека тоа е добра идеја да се знае и јас ќе ги вклучи сите во еден код фрагмент.

Отворете го вашиот скрипт greetme.sh и измените го на следниов начин:

#! / bin / bash echo "Име на датотеката: $ 0" ехо "ID процес: $$" ехо "---------------------------- --- "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.

Секој пат кога го стартувате сценариото со> симболот ја пребришува содржината на излезната датотека. Ако сакате да додадете во датотеката замени со> со >>.

Резиме

Сега треба да можете да пишувате текст на екранот и да ги прифатите влезните параметри.