Ръководство за начинаещи за BASH - Параметри за въвеждане

Добре дошли във втората част на Ръководството за начинаещи за серия BASH, която е уникална, тъй като е единственият урок на BASH, написан от начинаещ за начинаещи.

Читателите на това ръководство ще изградят своето знание, докато изграждам знанията си и се надявам, че до края на всичко това ще можем да напишем доста хитро скриптове.

Миналата седмица включих създаването на първия си скрипт, който просто показа думите "Здравей свят". Той обхваща теми като текстови редактори, как да отворите терминален прозорец, къде да поставите скриптовете си, как да изведете думите "Здравей свят" и някои по-фини точки върху евакуационни знаци като кавички ("").

Тази седмица ще покрия входящите параметри. Има и други ръководства, които преподават такива неща, но смятам, че те навлизат в нещо доста ниско ниво и може би предоставят твърде много информация.

Какво е параметър?

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

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

Какво ще кажете за скрипт, който поздравява човека, който го изпълнява? Вместо да казваш "Здравей свят", ще кажеш "Здравей Гари", "Здравей Тим" или "Здравей Доли".

Без възможността да приемаме входните параметри, ще трябва да напишем три скрипта "hellogary.sh", "hellotim.sh" и "hellodolly.sh".

Като позволим на нашия скрипт да прочете параметрите за въвеждане, можем да използваме един скрипт, за да поздравим всеки.

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

cd скриптове

Създайте нов скрипт, наречен greetme.sh, като въведете следното: ( за докосване на командата )

докоснете greetme.sh

Отворете скрипта в любимия си редактор, като въведете следното: ( за нано команда )

nano greetme.sh

Въведете следния текст в нано:

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

Натиснете CTRL и O, за да запазите файла и след това CTRL и X, за да затворите файла.

За да изпълните скрипта, въведете следното в командния ред, замествайки името си.

sh greetme.sh

Ако изпълнявам сценария с моето име, той показва думите "Здравей Гари".

Първият ред има #! / Bin / bash линия, която се използва за идентифициране на файла като баш скрипт.

Вторият ред използва изявлението за ехо, за да отразява думата "здравей" и след това има странното означение $ @. ( за командата за ехо )

$ @ Се разширява, за да покаже всеки вмъкнат параметър заедно със името на скрипта. Така че, ако сте написали "sh greetme.sh tim", думите "hello tim" ще бъдат показани. Ако сте написали "greetme.sh tim smith", тогава ще се появят думите "hello tim smith".

Може да е хубаво за скрипта greetme.sh просто да кажете здрасти, като използвате само първото име. Никой не казва "hello gary newell", когато те се срещнат с мен, но биха могли да кажат "Здравей Гари" все пак.

Нека да променим сценария така, че да използва само първия параметър. Отворете скрипта greetme.sh в нано, като въведете следното:

nano greetme.sh

Променете скрипта, така че да се чете както следва:

#! / bin / bash ехо "Здравейте, $ 1"

Запишете скрипта, като натиснете CTRL и O, след което излезте, като натиснете CTRL и X.

Стартирайте скрипта, както е показано по-долу (заменете моето име с вашето):

Шеридж

Когато стартирате скрипта, той просто ще каже "Здравей Гари" (или, надявам се, "Здравей" и каквото и да е името ти.

Символът 1 след символа $ основно казва на командата ехо, използвайте първия параметър. Ако смените $ 1 с $ 2, то ще покаже "hello newell" (или каквото и да е вашето фамилно име).

Между другото, ако сте заменили $ 2 с $ 3 и сте използвали само 2 параметъра, изходът би бил просто "Здравей".

Възможно е да се покаже и да се справя с броя на параметрите, които действително са въведени, а в следващите уроци ще покажа как да се използва броят на параметрите за целите на валидирането.

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

#! / bin / bash echo "въведете $ # имена" echo "Здравейте @ @"

Натиснете CTRL и O, за да запазите скрипта и CTRL и X, за да излезете от нано.

$ # На втория ред показва броя въведени параметри.

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

Реалната употреба на изразите за ехо е да предостави подробен и смислен изход за потребителя. Ако можете да си представите, че искате да направите нещо сложно, което включва някои сериозни разтърсващи числа и манипулиране на файлове / папки, би било полезно да покажете на потребителя какво се случва на всяка стъпка от пътя.

За разлика от тях параметрите за въвеждане правят вашия скрипт интерактивен. Без параметри за въвеждане ще ви трябва десетки скриптове, които правят много подобни неща, но с малко различни имена.

Имайки предвид всичко това, има някои други полезни параметри на въвеждане, че е добра идея да се знае и аз ще ги включа в един кодов фрагмент.

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

#! / bin / bash echo "Име на файл: $ 0" echo "ID на процеса: $$" echo "---------------------------- --- "ехо" сте въвели $ # имена "echo" здравей $ @ "

Натиснете CTRL и O, за да запазите файла и CTRL и X, за да излезете.

Сега изпълнете скрипта (заменете с вашето име).

sh greetme.sh

Този път скриптът показва следното:

Име на файла: greetme.sh ID на процеса: 18595 ------------------------------ Въведете 2 имена hello gary newell

$ 0 на първия ред на скрипта показва името на скрипта, който използвате. Имайте предвид, че това е долар нула, а не долар o.

В $ $$ на втория ред се показва идентът на процеса на скрипта, който изпълнявате. Защо това е полезно? Ако използвате скрипт на преден план, можете да го анулирате, като просто натиснете CTRL и C. Ако сте изпълнили сценария във фонов режим и сте започнали да го въртите и да вършите едно и също нещо отново или да започнете да причинявате щети на вашата система, да го убие.

За да убиете скрипт, изпълняващ се във фонов режим, се нуждаете от идентификатора на процеса на скрипта. Не би ли било добре, ако сценарият даде ID на процеса като част от неговата продукция. ( за ps и kill команди )

Най-накрая, преди да завърша с тази тема, исках да обсъдя къде излиза продукцията. Всеки път, когато скриптът е работил досега, изходът се показва на екрана.

Доста често срещано е, че изходът на скрипта се записва в изходен файл. За да направите това, изпълнете своя скрипт, както следва:

sh greetme.sh gary> greetme.log

Символът> в горната команда извежда текста "hello gary" на файл, наречен greetme.log.

Всеки път, когато стартирате скрипта със символа> той презаписва съдържанието на изходния файл. Ако предпочитате да добавите файл, заменете> с >>.

резюме

Вече трябва да можете да пишете текст на екрана и да приемате входните параметри.