Kezdõ útmutató BASH - bemeneti paraméterekhez

Üdvözöljük a BASH sorozat kezdőknek szóló útmutató második részében, amely egyedülálló abban, hogy ez az egyetlen BASH bemutató, amelyet a kezdők kezdőknek írt.

Az útmutató olvasói felépítik tudásukat, ahogy felépítem a tudásomat, és remélhetőleg végéig mindent megteszünk, hogy majdnem elég okos szkripteket írjunk.

A múlt héten lefedtem az első forgatókönyvedet, amely egyszerűen megjelenítette a "Hello World" szót. Ez kiterjed olyan témákra, mint a szövegszerkesztők, a terminál ablak megnyitása, a parancsfájlok elhelyezésére, a "Hello World" szavak megjelenítésére, és néhány finomabb pontra a menekülési karakterek, például idézőjelek ("") megjelenítéséhez.

Ezen a héten a bemeneti paramétereket fogom lefedni. Vannak más útmutatók is, amelyek tanítják ezt a dolgot, de azt találom, hogy valami meglehetősen alacsony szintre ugrik, és talán túl sok információt szolgáltatnak.

Mi a paraméter?

Az utolsó bemutató "Hello World" szkriptje mind nagyon statikus volt. A forgatókönyv nem igazán sokat tett.

Hogyan javíthatunk a Hello World scripten?

Mi van azzal a szkripttel, amely üdvözli a futó személyeket? Ahelyett, hogy "Hello World" -t mondanál, "Hello Gary", "Hello Tim" vagy "Hello Dolly".

A bemeneti paraméterek elfogadása nélkül három "hello", "hellotim.sh" és "hellodolly.sh" szkriptet kell írni.

Ha megengedjük a szkriptünknek a bemeneti paraméterek olvasását, egy szkriptet használhatunk, hogy bárkit is üdvözöljünk.

Ehhez nyisson meg egy terminál ablakot (CTRL + ALT + T) és navigáljon a parancsfájlok mappájába az alábbiak beírásával: ( cd parancsról )

cd szkriptek

Hozz létre egy új greetme.sh nevű parancsfájlt a következő paranccsal : ( about touch command )

touch greetme.sh

Nyissa meg a szkriptet a kedvenc szerkesztőben az alábbiak beírásával: ( a nano parancsról )

nano greetme.sh

Adja meg a következő szöveget a nano alatt:

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

Nyomja meg a CTRL és az O gombot a fájl mentéséhez, majd a CTRL és X billentyűkombinációt a fájl bezárásához.

A parancsfájl futtatásához írja be a következőt a parancssorba, amely helyettesíti a nevedet.

sh greetme.sh

Ha a nevemhez futtatom a forgatókönyvet, megjelenik a "Hello Gary" szavak.

Az első sorban megtalálható a #! / Bin / bash vonal, amellyel a fájlt bash parancsfájlként azonosítják.

A második sor a echo utasítást használja, hogy visszhangozza a hello szót, majd ott van a furcsa $ @ jelölés. ( echo parancsról )

A $ @ kiterjeszti a megjelenítendő paraméterek megjelenítését a parancsfájl nevével együtt. Tehát, ha beírta a "sh greetme.sh tim" szót, akkor a "hello tim" felirat jelenik meg. Ha beírtad a "greetme.sh tim smith" szót, akkor a "hello tim smith" szavak megjelennek.

Jó lehet, ha a greetme.sh parancsfájl csak a keresztnevet használja. Senki sem mondja "hello gary newell", amikor találkoznak velük, azt mondhatják, hogy "hello gary".

Nézzük meg a szkriptet úgy, hogy csak az első paramétert használja. Nyissa meg a greetme.sh parancsfájlt a nano-ban a következő módon:

nano greetme.sh

Módosítsa a szkriptet úgy, hogy az a következőképpen olvasható:

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

Mentse a szkriptet a CTRL és O billentyűkombinációval, majd a CTRL és az X gombbal lépjen ki.

Futtassa a szkriptet az alábbiak szerint (cserélje a nevemet a tiédre):

sh greetme.sh gary newell

Ha futtatja a szkriptet, egyszerűen azt fogja mondani, hogy "hello gary" (vagy remélhetőleg "hello" és bármi is a neved.

Az 1 után a $ szimbólum alapvetően az echo parancsnak mondja, használja az első paramétert. Ha az $ 1-et 2 dollárra cseréli, akkor megjelenik a "hello newell" (vagy a vezetékneved).

Egyébként, ha a $ 2-t a $ 3 -ra cserélted és a scriptet csak két paraméterrel futtattuk, a kimenet egyszerűen "Hello" lesz.

Lehetőség van megjeleníteni és kezelni a ténylegesen beírt paraméterek számát, és a későbbi útmutatókban bemutatom, hogyan kell használni a paraméterek számát érvényesítési célokra.

A nyitott paraméterek számának megjelenítéséhez nyissa meg a greetme.sh parancsfájlt (nano greetme.sh), és módosítsa a szöveget a következőképpen:

#! / bin / bash echo "beírt $ # names" echo "hello $ @"

Nyomja meg a CTRL és az O gombot a parancsfájl mentéséhez, majd a CTRL és az X gombot a nano-ból való kilépéshez.

A $ # a 2. sorban megjeleníti a megadott paraméterek számát.

Eddig mindez újdonság volt, de nem nagyon hasznos. Kinek van szüksége egy forgatókönyvre, amely egyszerűen megjeleníti a "hello" -t?

Az echo-kimutatások valóságos használata az, hogy szórakoztató és értelmes kimenetet biztosítson a felhasználónak. Ha el tudod képzelni, hogy valami bonyolultat akarsz csinálni, ami komoly számfotózást és fájl / mappa manipulációt igényel, hasznos lenne megmutatni a felhasználónak, hogy mi történik az egyes lépésekkel.

Ezzel szemben a bemeneti paraméterek interaktívvá teszik a szkriptet. Beviteli paraméterek nélkül több tucat parancsfájlra lenne szüksége, ami nagyon hasonlít, de kicsit más néven.

Mindezek szem előtt tartásával vannak más hasznos bemeneti paraméterek is, amelyeket jó ötlet tudni, és mindegyiket egy kódrészletben fogom beilleszteni.

Nyissa meg a greetme.sh szkriptet, és módosítsa a következőképpen:

#! / bin / bash echo "Filenév: $ 0" echo "Folyamat azonosítója: $$" echo "---------------------------- --- "echo" beírt $ # names "echo" hello $ @ "

Nyomja meg a CTRL és az O gombot a fájl mentéséhez, majd a CTRL és az X gombot a kilépéshez.

Most futtassa a szkriptet (cserélje a nevével).

sh greetme.sh

Ezúttal a parancsfájl a következőket jeleníti meg:

Fájlnév: greetme.sh Folyamat azonosítója: 18595 ------------------------------ Ön beírta a 2 nevet hello gary newell

A szkript első sorában lévő 0 $ a megjelenő parancsfájl nevét jeleníti meg. Ne feledje, hogy dollár nulla és nem dollár o.

A $$ a második sorban megjeleníti az Ön által futott szkript folyamatazonosítóját. Miért hasznos ez? Ha szkriptet futtat az előtérben, akkor a CTRL és C billentyűkombinációval törölheti. Ha a háttérben futott a szkript, és megkezdte a ciklust, és ugyanazt csinálta újra vagy újra, vagy elkezdte kárt okozni a rendszerben, akkor szüksége lenne rá megölni.

A háttérben futó szkript megöli a szkript folyamatazonosítóját. Nem lenne jó, ha a szkript megadta a folyamat azonosítóját a kimenete részeként. ( a ps-ról és a parancsokról )

Végül, mielőtt befejezem ezt a témát, azt akartam megtudni, hogy hol jár a kimenet. Minden alkalommal, amikor a szkript eddig futott, a kimenet megjelenik a képernyőn.

Nagyon gyakori, hogy a parancsfájl kimeneti fájlba írható. Ehhez futtassa a szkriptet az alábbiak szerint:

sh greetme.sh gary> greetme.log

A fenti parancsban a> szimbólum a "hello gary" szöveget kiadja egy greetme.log nevű fájlnak.

Minden alkalommal, amikor a szimbólumot a> szimbólummal futtatja, felülírja a kimeneti fájl tartalmát. Ha a fájlt csatolni szeretné, cserélje ki a> a >> -et.

összefoglalás

Mostantól meg kell tudnia írni a szöveget a képernyőre és elfogadnia a bemeneti paramétereket.