Útmutató kezdőknek a BASH-hoz

Üdvözöljük a Beginners Guide to BASH sorozat 2. részében, amely egyedülálló abban, hogy ez az egyetlen BASH oktatóanyag, amelyet kezdő írt kezdőknek.

Az útmutató olvasói gyarapítják tudásukat, és remélhetőleg a végére képesek lesznek megírni néhány meglehetősen okos forgatókönyvet.

Legutóbb foglalkoztunk elkészíti az első szkriptet amely egyszerűen a „Hello World” szavakat jelenítette meg. Olyan témákkal foglalkozik, mint a szövegszerkesztők, a terminálablak megnyitása, a szkriptek elhelyezése, hogyan jelenítheti meg a „Hello World” szavakat és néhány finomabb pontot az escape karaktereken, például az idézőjeleken ("").

Ez a rész a bemeneti paraméterekkel foglalkozik. Vannak egyéb útmutatók akik ilyesmit tanítanak, de túl gyakran beleugranak néhány meglehetősen alacsony szintű dologba, és talán túl sok információt szolgáltatnak.

A paraméterszkript személyre szabást ad

A legutóbbi oktatóprogram „Hello World” forgatókönyvében mindez nagyon statikus volt. A forgatókönyv nem igazán csinált sokat.

Hogyan javíthatnánk a „Hello World” forgatókönyvön?

Mi a helyzet egy szkripttel, amely üdvözli a futtató személyt? A „Hello World” helyett azt fogja mondani, hogy „Hello Gary”, „Hello Tim” vagy „Hello Dolly”.

A bemeneti paraméterek elfogadásának képessége nélkül három szkriptet kellene írnunk: „hellogary.sh”, „hellotim.sh” és „hellodolly.sh”.

Hogyan hozzunk létre egy paramétert

Ha engedélyezzük a szkriptünknek a bemeneti paraméterek olvasását, egyetlen szkriptet használhatunk bárki üdvözlésére.

Ehhez nyisson meg egy terminál ablakot (CTRL + ALT + T), és navigáljon a szkriptek mappájába a következő beírásával: (cd parancsról)

cd szkriptek

Hozzon létre egy új szkriptet greetme.sh néven a következő beírásával: (érintési parancsról)

érintse meg a greetme.sh-t

Nyissa meg a szkriptet kedvenc szerkesztőjében a következő beírásával: (a nano parancsról)

nano greetme.sh

Írja be a következő szöveget a nano-n belül:

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

nyomja meg CTRL és O a fájl mentéséhez, majd CTRL és x a fájl bezárásához.

Linux alap Bash szkript paraméterekkel

A szkript futtatásához írja be a következőt a parancssorba a saját nevével helyettesítve.

sh greetme.sh Tim

Ha a nevemmel futtatom a szkriptet, megjelenik a „Hello Gary” szavak.

A Linux alapszkriptet futtat paraméterekkel

Az első sorban a #!/bin/bash sor található, amely a fájl bash szkriptként történő azonosítására szolgál.

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

A $@ kibővül, és megjeleníti az összes beírt paramétert a szkriptnévvel együtt. Tehát ha beírta a „sh greetme.sh tim” parancsot, a „hello tim” szavak jelennek meg. Ha beírta, hogy „greetme.sh tim smith”, akkor a „hello tim smith” szavak jelennek meg.

Echo Commands használata

Jó lehet, ha a greetme.sh szkript csak a keresztnévvel köszön. Senki sem mondja azt, hogy "Hello Gary Newell", amikor találkoznak valakivel, de lehet, hogy azt mondják: "Hello Gary".

Változtassuk meg a szkriptet úgy, hogy az csak az első paramétert használja. Nyissa meg a greetme.sh szkriptet nano nyelven a következő beírásával:

nano greetme.sh

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

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

Mentse el a szkriptet a gomb megnyomásával CTRL és O majd a gomb megnyomásával lépjen ki CTRL és X.

Linux Bash szkript egyedi paraméterekkel

Futtassa a szkriptet az alábbiak szerint (cserélje ki a nevet a sajátjára):

sh greetme.sh gary newell

A forgatókönyv futtatásakor egyszerűen azt fogja mondani, hogy „Hello Gary” (vagy remélhetőleg „hello”, és mi a neve).

Linuxon fut a Bash szkript egyetlen paraméterrel

A $ szimbólum utáni 1 alapvetően az echo parancsra utal, használja az első paramétert. Ha az 1 dollárt lecseréli egy 2 dollárra, akkor a „hello newell” (vagy mi a vezetékneve) jelenik meg. A teljes név megszerzéséhez hozzáadhat 2 dollárt az 1 dollár után.

Linux Bash szkript több paraméterrel

Ha egynél több paraméterrel futtatja, akkor azok a beírásuk sorrendjének megfelelő helyeken jelennek meg.

Linux futtató szkript több paraméterrel

Mellesleg, ha a 2 dollárt 3 dollárra cserélné, és a szkriptet csak 2 paraméterrel futtatná, a kimenet egyszerűen a "Hello" lesz.

A használt paraméterek számának megjelenítése

Lehetőség van a ténylegesen bevitt paraméterek számának megjelenítésére és kezelésére, a későbbi oktatóanyagok pedig megmutatják, hogyan kell használni a paraméterek számát érvényesítési célokra.

A beírt paraméterek számának megjelenítéséhez nyissa meg a greetme.sh szkriptet (nano greetme.sh), és módosítsa a szöveget az alábbiak szerint:

#!/bin/bash
echo "$# nevet adott meg"
echo "hello $@"

nyomja meg CTRL és O a szkript mentéséhez és CTRL és x a nanoból való kilépéshez.

Linux Bash script count paraméterek

A 2. sorban lévő $# a beírt paraméterek számát mutatja.

Eddig mindez újszerű volt, de nem túl hasznos. Kinek van szüksége olyan szkriptre, amely egyszerűen a „hello”-t jeleníti meg?

A Linux futtatja a bash script számláló paramétereit

Echo Statements vs. Bemeneti paraméterek

Az echo utasítások valódi használata az, hogy bőbeszédű és értelmes kimenetet biztosítsanak a felhasználó számára. Ha el tudja képzelni, hogy valami bonyolult dolgot szeretne csinálni, ami komoly számropogtatással jár és a fájl/mappa manipuláció, hasznos lenne megjeleníteni a felhasználó számára, hogy mi történik az egyes lépésekben út.

Ezzel szemben a bemeneti paraméterek interaktívvá teszik a szkriptet. Bemeneti paraméterek nélkül tucatnyi szkriptre lenne szükség, amelyek mindegyike nagyon hasonló dolgokat csinál, de kissé eltérő néven.

Mindezeket szem előtt tartva, van még néhány hasznos bemeneti paraméter, amelyeket jó ötlet tudni, és ezeket mind egy kódrészletben fogom felvenni.

Nyissa meg a greetme.sh szkriptet, és módosítsa az alábbiak szerint:

#!/bin/bash
echo "Fájlnév: $0"
echo "Folyamatazonosító: $$"
visszhang ""
echo "$# nevet adott meg"
echo "hello $@"

nyomja meg CTRL és O a fájl mentéséhez és CTRL és x kilépni.

Linux Bash script további információ

Most futtassa a szkriptet (cserélje ki a saját nevével).

sh greetme.sh 

Ezúttal a szkript a következőket jeleníti meg:

Fájlnév: greetme.sh
Folyamatazonosító: 18595

2 nevet írtál be
szia gary newell
Linux Bash futtató szkript további információkkal

A szkript első sorában a $0 a futtatott szkript nevét jeleníti meg. Vegye figyelembe, hogy ez nulla dollár és nem o dollár.

A második sorban lévő $$ a futtatott szkript folyamatazonosítóját jeleníti meg. Miért hasznos ez? Ha egy szkriptet futtat az előtérben, akkor egyszerűen a gomb megnyomásával törölheti CTRL és C. Ha a háttérben futtatta a szkriptet, és újra és újra elkezdett hurkolni, és ugyanazt csinálja, vagy kárt okoz a rendszerben, akkor meg kell ölnie.

A háttérben futó szkript leállításához szükség van a szkript folyamatazonosítójára. Nem lenne jó, ha a szkript megadná a folyamatazonosítót a kimenet részeként? (a ps-ről és a kill parancsokról)

Befejezéshez...

Végül, mielőtt befejeznénk ezt a témát, fontos megvitatni, hogy hová kerül a kimenet. Minden alkalommal, amikor a szkript eddig futott, a kimenet megjelenik a képernyőn.

Elég gyakori, hogy a szkript kimenetét kimeneti fájlba írják. Ehhez futtassa a szkriptet a következőképpen:

sh greetme.sh gary > greetme.log

A > szimbólum a fenti parancsban a „hello gary” szöveget adja ki a greetme.log nevű fájlba.

Minden alkalommal, amikor a > szimbólummal futtatja a szkriptet, felülírja a kimeneti fájl tartalmát. Ha inkább hozzá szeretne fűzni a fájlhoz, cserélje ki a > jelet >>-ra.

Most már képesnek kell lennie szöveget írni a képernyőre, és elfogadnia a beviteli paramétereket.