Bash Scripting bemutató kezdőknek

Bash Scripting Tutorial



A Linux alapértelmezett parancsnyelve a Bash script. Naponta sok parancsot kell futtatnunk Linux alatt, sok célból. Ezek a napi feladatok bash szkript használatával automatizálhatók. Bármely felhasználó nagyon könnyen és gyorsan elsajátíthatja ezt a szkriptnyelvet. Ha új vagy a bash programozásában, akkor ez az oktatóanyag az Ön számára.

Tartalom:

  1. Hozzászólások
  2. echo Parancs
  3. Változók
  4. Feltételes nyilatkozat
  5. Hurok
  6. Funkciók
  7. Programok hívása szkriptben
  8. Menük létrehozása
  9. Parancssori feldolgozás
  10. Számtan
  11. String manipuláció
  12. Visszaadási kódok visszaadása egy szkriptből, és egy másik szkript befogása
  13. Olvasás és írás fájlokba
  14. Csövek

Hozzászólások

Megjegyzések hozzáadása a kóddal elengedhetetlen része minden programozási nyelvnek. A megjegyzéseket a végrehajtáskor a szkript nem értelmezi. Az olvasó minden kódot megfelelően megérthet, ha a kódot jól megjegyzi. Megjegyzést többféleképpen is hozzáadhat a bash scriptben. Ebben a részben bemutatjuk, hogyan adhat hozzá egysoros és többsoros megjegyzéseket egy bash parancsfájlhoz. Hozzon létre egy bash fájlt a következő szkripttel, hogy megtudja a bash megjegyzés használatát. Itt a „#” szimbólum egysoros megjegyzés hozzáadásához használható, az egyetlen idézet („) és a„: ”pedig a többsoros megjegyzések hozzáadásához.







bash_comment.sh



#!/bin/bash
#Vegyen be egy számot bemenetként
kidobta 'Írjon be egy számot'
olvasnak nek
:'
Ellenőrizze a bemeneti számot
kevesebb, mint 10, vagy nagyobb, mint 10, vagy egyenlő 10 -gyel
'

ha [[ $ a -lt 10 ]]
azután
kidobta 'A szám kevesebb, mint 10'
elif [[ $ a -gt 10 ]]
azután
kidobta 'A szám nagyobb, mint 10'
más
kidobta 'A szám egyenlő 10'
lenni

Kimenet:



Futtassa a szkriptet.





$bashbash_comment.sh

Itt a szkript háromszor fut, a bemeneti érték 3, 10 és 90. A következő kimenet jelenik meg.



Ha többet szeretne megtudni a bash kommentelésről, ellenőrizheti ezt az oktatóanyagot .

Ugrás a tetejére

visszhang parancs

Az 'echo' parancs a bash -ban a kimenet nyomtatására szolgál a terminálon. A bash echo paranccsal különböző lehetőségek használhatók a kimenet különböző módon történő nyomtatásához. Hozzon létre egy bash fájlt a következő szkripttel, hogy megismerje az `echo` parancs két egyszerű használatát. Itt az első 'echo' parancs egy egyszerű szöveges adatot nyomtat ki egy új sorral, a második echo parancs pedig egy egyszerű szöveget új sor nélkül.

echo_test.sh

#!/bin/bash
#Nyomtassa ki az első szöveget
kidobta 'Szöveg nyomtatása új sorral'
#Nyomtassa ki a második szöveget
kidobta -n 'Szöveg nyomtatása új sor nélkül'

Kimenet:

Futtassa a szkriptet.

$bashecho_test.sh

A fenti parancs végrehajtása után a következő kimenet jelenik meg.

Az 'echo' parancsnak sok más felhasználási módja is van a bash -ban. Ebben az oktatóanyagban többet megtudhat az 'echo' parancsról.

Ugrás a tetejére

Változók

A változó deklaráció minden programozási nyelv szükséges része. A Bash változókat különböző módon lehet deklarálni. Ha egy változóhoz érték van hozzárendelve, akkor a változó elején nincs szimbólum. A „$” szimbólumot a változó nevével együtt használják a változó értékének olvasásakor. A változó használható a terminálról, vagy bármilyen bash szkriptben.

A következő parancsok egy string változót neveznek meg mystr egy adott értékkel, majd nyomtassa ki a változó értékét a terminálban.

$mystr='Szeretem a bash programozást'
$kidobta $ mystr

Kimenet:

Hozzon létre egy bash fájlt a következő szkripttel. Itt két változót kell megadni. Ezek $ a és $ b . Ha a bemeneti érték, amely a $ a egyenlő $ b akkor az üzenet, A számok egyenlők különben kinyomtatásra kerül A számok nem egyenlők nyomtatásra kerül.

var.sh

#!/bin/bash
kidobta 'Írjon be egy számot'
olvasnak nek
b=100
ha [[ $ a -eq $ b ]]
azután
kidobta 'A számok egyenlők'
más
kidobta 'A számok nem egyenlőek'
lenni

Kimenet:

Futtassa a szkriptet.

$bashvar.sh

A fenti parancsot kétszer hajtják végre 56 és 100 értékekkel. A következő kimenet jelenik meg.

Ha többet szeretne tudni a bash változókról, ellenőrizheti ezt az oktatóanyagot .

Ugrás a tetejére

Feltételes nyilatkozat

A másik programozási nyelvhez hasonlóan a bash -ban is használhatja a feltételes utasítást. ' Ha-akkor-más 'És' ügy ’Utasításait főleg feltétel -nyilatkozatok végrehajtására használják bármely programozási nyelven. Feltételes utasítás használata a használatával 'ha' kijelentés az oktatóanyag ezen részében látható. Hozzon létre egy bash fájlt a következő szkripttel, ahol feltételes utasítást használ. Itt két értéket veszünk be a felhasználótól bemenetként, és tároljuk a változókban, $ kód , és $ kor . Az „if” utasítást használjuk az érték ellenőrzésére $ kor nagyobb vagy egyenlő 18 és az értéke $ kód van 1100 . Ha mindkét feltétel teljesül, akkor az üzenet Ön jogosult a film megtekintésére különben kinyomtatásra kerül Ön nem jogosult a film megtekintésére nyomtatásra kerül.

cond.sh

#!/bin/bash

kidobta 'Írd be a kódodat'
olvaskód
kidobta 'Add meg az életkorod'
olvaskor

ha [[ $ kor -adni 18 && $ kód -eq '1100' ]]
azután
kidobta 'Ön jogosult a film megtekintésére'
más
kidobta 'Ön nem jogosult a film megtekintésére'
lenni

Kimenet:

Futtassa a szkriptet.

$bashcond.sh

A következő kimenet jelenik meg, miután különböző bemeneti értékeket vett fel. Az 1100 kódot és 5 az életkort adja meg az első végrehajtáshoz, és ha a feltétel hamis értéket ad vissza ezekhez az értékekhez. Az 1100 kódot, a 45 pedig az életkort adja meg a második végrehajtáshoz, amely igaz értéket ad vissza if feltétel esetén.

Ha többet szeretne tudni a bash feltételes utasításról, akkor ellenőrizze ezt az oktatóanyagot.

Ugrás a tetejére

Hurok

Ha a szkript egyes részeit többször kell végrehajtani, akkor a ciklus a feladat elvégzésére szolgál. A Bash háromféle hurok deklarációt támogat, mint más nyelvek. Ezek ciklusra szólnak, és addig. A programozási követelmények alapján egy adott hurkot használnak a szkriptben. E három típusú hurok felhasználását ebben a szakaszban mutatjuk be egyszerű példákkal.

Használata hurokhoz

Hozzon létre egy bash fájlt a következő szkripttel, ahol ` érte hurkot használják az iterációhoz. `ért ' ciklus főleg egy adatlista vagy egy tömb iterálására szolgál. Itt a hétköznapok listáját használja, és minden hétköznapi nevet a ciklus használatával iterál. `ha` utasítás egy adott üzenet nyomtatására szolgál a hétköznap neve alapján.

mert.sh

#Olvassa el a hét minden napját a ciklus minden iterációjában
számáranapban benhétfő kedd szerda csütörtök péntek szombat vasárnap
tedd

#Ellenőrizze, hogy a hétköznap neve hétfő vagy csütörtök
ha [[ $ nap=='Hétfő' || $ nap=='Csütörtök' ]]
azután
kidobta - Találkozó$ nap9:30 órakor

#Ellenőrizze, hogy a hétköznap neve kedd vagy szerda vagy péntek
elif [[ $ nap=='Kedd' || $ nap=='Szerda' || $ nap=='Péntek' ]]
azután
kidobta 'Edzés tovább$ nap11:00 órakor
más

#Nyomtassa ki az „Ünnepet” más napokra
kidobta '$ napünnep van '
lenni
Kész

Kimenet:

Futtassa a szkriptet.

$bashmert.sh

A szkript futtatása után a következő kimenet jelenik meg.

Ha többet szeretne tudni a bash for loop használatáról, ellenőrizze ezt az oktatóanyagot.

A while ciklus használata

Hozzon létre egy bash fájlt a következő szkripttel, ahol ` míg ` hurkot használják az iterációhoz. Ez a szkript kinyomtatja azokat a számokat 1 -től 20 -ig, amelyek párosak és oszthatók 5 -tel. $ számláló változó a ciklus iterációjának szabályozására szolgál, és ennek a változónak az értékét 1 -gyel növeljük minden iterációban. Amikor `ha` feltétel igaz lesz, majd kinyomtatja a $ számláló .

#!/bin/bash

#Nyomtassa ki az üzenetet
kidobta 'Nyomtassa ki azokat a számokat, amelyek párosak és oszthatók 5 -tel'

#Inicializálja a számlálót
számláló=1

#Ismételje meg a ciklust, amíg a $ számláló értéke kisebb vagy egyenlő 20 -nál
míg [ $ számláló -az húsz ]
tedd

#Ellenőrizze, hogy a $ számláló osztható -e 2 -vel és 5 -tel
ha [[ $ számláló%2-eq 0 && $ számláló%5-eq 0 ]]
azután
#Nyomtatás $ számláló új sor nélkül
kidobta '$ számláló'
lenni

#Növelje $ számlálóját 1 -gyel
((számláló ++))
Kész
kidobta 'Kész'

Kimenet:

$bashmíg.sh

Csak 1-20-as számok vannak, amelyek párosak és oszthatók 5-tel. A következő kimenet jelenik meg a szkript futtatása után.

Ha többet szeretne tudni a bash használatáról míg` hurok, akkor ellenőrizheti ezt az oktatóanyagot .

Használat ciklusig

Hozzon létre egy bash fájlt a következő szkripttel, ahol ` amíg` hurkot használják az iterációhoz. Ez a szkript minden páratlan számot kinyomtat 0 és 20 között. $ n változót használják ebben a szkriptben a ciklus iterálására.

amíg.sh

#!/bin/bash

#Inicializálja a változót, n
n=húsz

#Ismételje meg a ciklust, amíg $ n értéke nagyobb, mint 0
amíg [ $ n -lt 0 ]
tedd

#Ellenőrizze, hogy n értéke páratlan -e
ha [[ $ n%2-gt 0 ]]
azután
kidobta $ n
lenni

#Növelje n értékét 1 -gyel
((n=$ n-1))
Kész

Kimenet:

Futtassa a szkriptet.

$bashamíg.sh

A szkript minden páros számot kinyomtat 20 -tól 1 -ig. A szkript futtatása után megjelenik a következő kimenet.

Ugrás a tetejére

Funkciók

Ha egy kódblokkot többször kell végrehajtani egy szkriptben, akkor a függvényt használják a feladat végrehajtásához. Csak akkor kell név szerint hívnia a függvényt, ha a függvényben meghatározott szkriptet sokszor kell végrehajtani, nem pedig ugyanazt a szkriptet többször hozzáadni. A kezdő és befejező első zárójelet a függvény nevével használjuk a függvény deklarálásához bash scriptben. A függvény csak a bash függvény nevével hívható meg. A Bash nem támogatja a funkció argumentumot, mint egy másik szabványos programozási nyelv. De az érték a bash függvényhez más módon is átadható, mint ebben a részben látható. Az érték visszaadható a függvényből a return utasítással, vagy a return utasítás használata nélkül.

Hozzon létre egy bash fájlt a következő szkripttel, hogy megtudja, hogyan deklarálhatók és hívhatók meg a függvények a bash scriptben. A szkriptben három függvény van deklarálva. Az első függvény egy egyszerű üzenet kinyomtatása, Bash programozás kezdőknek . A második függvény deklarálja, hogy egy karakterlánc értéket rendel egy változóhoz, $ return_str ami nyomtatni fog, Tanuld meg a bash programozást a LinuxHint segítségével a függvény hívása után. A harmadik függvény kijelentette, hogy egy argumentumértéket kör sugarának olvas, amelyet a függvény meghívásakor megadnak. Itt, helyi az argumentum értékének olvasására szolgál. Ez a függvény kiszámítja a kör területét a sugár értéke alapján a képlet segítségével, πr2 és nyomtassa ki a kiszámított területértéket.

func.sh

#!/bin/bash

#Nyilvánítson egy egyszerű funkciót
funkcióprint_message()
{
kidobta 'Bash programozás kezdőknek'
}

#Egy funkció deklarálása karakterlánc értékének visszaadására
funkcióret_strdata()
{
#Inicializálja a változót karakterlánc értékkel
return_str='Tanuld meg a bash programozást LinuxHint segítségével'
}

#Deklaráljon függvényt az argumentumérték olvasásához
funkciószámítás_terület()

#Olvassa el az átadott argumentum értékét
helyi sugár=$ 1
terület= $(kidobta $ sugarú*$ sugarú*3.14

#Hívja a funkciót egy egyszerű üzenet nyomtatásához
print_message

#Hívja meg azt a függvényt, amely egy karakterlánc értékét hozzárendeli a változóhoz
ret_strdata

#Nyomtassa ki a változó értékét
kidobta $ return_str

#Olvassa el a sugár értékét
kidobta 'Adja meg a sugár értékét'
olvasmunka

#Hívja meg a függvényt sugárértékkel
számítás_terület$ rad

Kimenet:

Futtassa a szkriptet.

$bashfunc.sh

A szkript futtatása után a következő kimenet jelenik meg. Az első két sor kinyomtatásra kerül a függvények hívásával, print_message () és ret_strdata () . Az utolsó sor a funkció hívásával nyomtatódik ki, számítás_terület () a bevitt sugár értékével.

Ha tudni akarja, hogy hogyan küldhet vissza egy karakterláncot a bash függvényből, akkor megteheti ezt a tutoriát az.

Ugrás a tetejére

Programok hívása szkriptben

Sokféle parancs segítségével hívhat más programokat bármilyen bash szkriptben, például forrás, bash, eval, végrehajt Tegyük fel, hogy három bash fájl, add.sh , kivonni.sh, szorozni.sh és osztani.sh összeadás, kivonás, szorzás és osztás végrehajtására jött létre. Itt, kivonni.sh és osztás.sh parancssori argumentumok olvasása. Mind a négy fájl szkriptje az alábbiakban található.

add.sh

#!/bin/bash
nak nek=60
b=40
((eredmény=$ a+$ b))
kidobta - A kiegészítés$ a+$ b=$ eredmény'

alvonat.sh

#!/bin/bash
nak nek=$ 1
b=2 USD
((eredmény=$ a-$ b))
kidobta - A kivonása$ a-$ b=$ eredmény'

szaporodni.sh

#!/bin/bash
((eredmény=$ 1*2 USD))
kidobta 'Az 1 és 2 dollár szorzata az$ eredmény'

oszd meg.sh

#!/bin/bash
nak nek=$ 1
b=2
((eredmény=$ a/$ b))
kidobta - A felosztás$ aáltal$ bvan$ eredmény'

Hozzon létre egy bash fájlt, callpro.sh a következő parancsfájl segítségével hívja meg az említett bash fájlokat a source, bash, eval és exec parancsok használatával. A következő parancsfájl futtatása előtt meg kell adnia a végrehajtási engedélyt a fenti négy fájlhoz. A 'source' parancs a hívásra szolgál add.sh fájlt. A `bash` parancs a subtract.sh fájl végrehajtására szolgál. Az `eval` parancs a multiply.sh fájl végrehajtására szolgál. Két bemeneti érték kerül elküldésre parancssori argumentumként az 'eval' parancshoz. Az utolsó parancs az exec parancs, amely csak abszolút útvonallal működik. Ehhez a divide.sh fájl teljes elérési útja szerepel a szkriptben.

callpro.sh

#!/bin/bash
script1='add.sh'
script2='subtract.sh'
script3='multiply.sh'
forgatókönyv4='/home/fahmida/code/divide.sh'

forrás '$ script1'

bash $ script2 ötven húsz

kidobta 'Adja meg a' értékét
olvasnak nek
kidobta 'Adja meg b értékét'
olvasb
eval bash $ script3 $ a $ b
végrehajt $ script4 30

Kimenet:

Futtassa a szkriptet.

$bashcallpro.sh

A szkript futtatása után a következő kimenet jelenik meg.

Ugrás a tetejére

Menük létrehozása

Van egy hasznos parancs a bash -ban egy egyszerű menü létrehozásához, amelyet ún `válassza ' parancs. Ezzel a paranccsal különböző típusú menük hozhatók létre. Ez a parancs egy adott adatlistát használ a menü létrehozásához. Hozzon létre egy bash fájlt a következő kóddal a használatának megtekintéséhez `válassza ' parancs a menü létrehozásához. Ebben a példában az öt elemből álló lista menüként lesz kinyomtatva, és arra kéri a felhasználót, hogy válasszon nyelvet a listából. A kiválasztott érték a változóban tárolódik, $ nyelv amelyet később más karakterlánccal összefűzve nyomtatnak ki. A szkript folyamatosan kéri a nyelv kiválasztását, amíg a felhasználó megnyomja 6 befejezni a forgatókönyvből.

menü.sh

#!/bin/bash

#Nyomtasson üzenetet a felhasználónak
kidobta 'Válassza ki kedvenc nyelvét'

# Határozza meg a menüelemek listáját
válassza kinyelvban benC# Java PHP Python Bash Kilépés
tedd
#Nyomtassa ki a kiválasztott értéket
ha [[ $ nyelv=='Kijárat' ]]
azután
kijárat 0
más
kidobta 'A kiválasztott nyelv az$ nyelv'
lenni
Kész

Kimenet:

Futtassa a szkriptet.

$bashmenü.sh

A következő kimenet szerint a felhasználó először megnyomta a 3 gombot, amikor kinyomtatta a PHP -t, és másodszor a 6 -ot, amely befejezte a szkriptet.

Ha többet szeretne tudni a bash menü létrehozásáról a 'select' gombbal, akkor látogassa meg ezt az oktatóanyagot.

Ugrás a tetejére

Parancssori feldolgozás

Néha beviteli értékeket kell megadnunk, amikor a parancsfájlt parancssorból futtatjuk. Ezt a feladatot kétféleképpen lehet elvégezni bash -ban. Az egyik módszer az argumentumváltozók, a másik pedig a getopts függvény használata. Ebben a szakaszban olvasható a parancssori bemeneti adatok terminálról történő olvasása az argumentumváltozó használatával.

Hozzon létre egy bash fájlt a következő szkripttel, hogy lássa a parancssori argumentum olvasási értékének használatát. Ez a szkript három parancssori argumentumot olvas be, amelyeket a $ operand1, $ operand2 és $ operator változók tárolnak. A szkript megfelelő végrehajtásához az első és a harmadik argumentumértéknek a számnak kell lennie, a második argumentumértéknek pedig a négy számtani operátor bármelyikének („+”, „-”, „/”, „x”) kell lennie. ha utasítás ellenőrzi a $ operátor értékét, és elvégzi a műveletet az operátor alapján, és kinyomtatja az értéket.

cl1.sh

#!/bin/bash

#Nyomtassa ki az argumentumváltozókat
kidobta 'Az érvek értéke: $ 1 $ 2 $ 3'

# Tárolja az argumentumértékeket
operandus1=$ 1
operandus2=3 USD
operátor=2 USD

#Ellenőrizze a 2. parancs argumentum értékét az aritmetikai művelet végrehajtásához
ha [[ $ operátor=='+' ]]
azután
((eredmény=$ operand1+$ operand2))
elif [[ $ operátor=='-' ]]
azután
((eredmény=$ operand1-$ operand2))
elif [[ $ operátor=='x' ]]
azután
((eredmény=$ operand1*$ operand2))
elif [[ $ operátor=='/' ]]
azután

((eredmény=$ operand1/$ operand2))
lenni

# nyomtassa ki az eredményt
kidobta -És 'Az eredmény =$ eredmény'

Kimenet:

Futtassa a szkriptet.

$bashcl1.sh

A szkript négy alkalommal hajtódik végre négyféle aritmetikai operátor esetén. A következő kimenet jelenik meg az argumentumértékekhez, 6 + 3, 6 - 3, 6 x 3 és 6/3 .

Az érvértékek bash név-érték párral továbbíthatók. Hozzon létre egy bash fájlt a következő parancsfájllal, amely megmutatja, hogyan kell olvasni az argumentumértékeket a névvel. A szkript két argumentumváltozót fog olvasni. A névvel ellátott argumentumértékek a szkript első utasításában találhatók. Ezt követően a for ciklus segítségével ismétlődik a parancssori argumentumokat tartalmazó tömb. A tömb minden eleme a 'cut' paranccsal van elválasztva egy kulcs-érték párból. Ezután az esetkifejezést egy adott üzenet kinyomtatására használják a kulcsérték alapján.

cl2.sh

. #! /am/bash

#Nyomtassa ki az argumentumváltozókat
kidobta 'Az érvek értéke: $ 1 $ 2'

#Olvassa el az egyes argumentumokat külön a ciklus használatával
számáramérgesban ben '[email protected]'
tedd

#Különálló argumentumnév és érték
kulcs= $(kidobta $ arg | vágott -f1 -d=)
érték= $(kidobta $ arg | vágott -f2 -d=)

#Nyomtasson üzenetet az argumentum neve alapján
ügy $ kulcs ban ben
név) kidobta 'Diák neve =$ értékű';;
Mark) kidobta 'Megszerezte a jelet =$ értékű' ;;
*)
esac
Kész

Kimenet:

Futtassa a parancsfájlt a következő parancssori argumentumokkal.

$bashcl2.shnév= Abir HossainMark=90

A fenti parancsokban két parancssori argumentum található. Ezek név = Abir Hossain és jel = 90 . név és jelek a szkript elválasztja őket, és a kimenet formázása után két érték nyomtatódik ki.

A parancssori argumentumok feldolgozása a használatával felszáll funkciót nem tárgyalja ez az oktatóanyag. Ha szeretne tudni a parancssori feldolgozásról a használatával felszáll funkció, akkor meglátogathatja ezt az oktatóanyagot .

Ugrás a tetejére

Számtan

Az aritmetikai műveletek elvégzése minden programozási nyelv általános követelménye. A Bash az aritmetikai műveletet más módon végzi, mint egy másik szabványos programozási nyelv. Számos módja van a számtani műveletek végrehajtására a bash -ban. Az aritmetikai művelet elvégzésének egyik egyszerű módja látható ebben a részben. Hozzon létre egy bash fájlt a következő szkripttel. Ebben a szkriptben négyféle számtani művelet látható. Egy egyszerű összegzési és osztási műveletek láthatók a szkript elején található kettős első zárójelek használatával. Ezután megjelenik a növekmény előtti művelet. Végül a gyorsíró operátor használatának módja a szkript utolsó részében látható.

arith.sh

#!/bin/bash
# Számítsa ki az összeget
eredmény= $((ötven+25))
# Az összegzési érték nyomtatása
kidobta 'összeg =$ eredmény'

# Számítsa ki az osztást
eredmény= $((ötven/25))
# Nyomtatási osztási érték
kidobta 'felosztás =$ eredmény'

# Rendeljen értéket N -hez
N=10
# Előzetes növelés
((--N))
# Nyomtassa ki az N értékét
kidobta 'Érték csökkentés után =$ N'

# Gyorsíró operátor használata
((N +=10 ))
# Nyomtassa ki az N értékét
kidobta 'Érték hozzáadása után 10 =$ N'

Kimenet:

Futtassa a szkriptet.

$basharith.sh

A szkript futtatása után a következő kimenet jelenik meg.

Minden számtani művelet dupla zárójel használatával történik a fenti szkriptben. De használhatja ' hagyja ',' kifejezés 'És' időszámításunk előtt 'Parancs a számítási művelet végrehajtására bash -ban. Ha többet szeretne megtudni ezekről a parancsokról a bash aritmetikai műveletek végrehajtásához, akkor látogassa meg ezt az oktatóanyagot.

Ugrás a tetejére

Karakterlánc -manipuláció

A bash -ban lévő karakterlánc -adatokkal sokféle feladat elvégezhető. Néhányan karakterláncot kapcsolnak össze, összehasonlítják a karakterláncot, szétválasztják a karakterláncot, a karakterlánc kis- és nagybetűit változtatják, stb. Nincsenek beépített karakterlánc-függvények, mint például a bash többi szabványos nyelve a karakterlánc-műveletek végrehajtásához. Néhány gyakori karakterlánc -manipulációt tárgyal az oktatóanyag ezen része.

Összefűző karakterlánc

Két vagy több karakterlánc összeillesztését karakterlánc -összefűzésnek nevezzük. A karakterláncot bash -ban egyesítik egymás után. Hozzon létre egy bash fájlt a következő szkripttel a karakterlánc -összefűzés használatának bemutatásához. Két karakterlánc -változót inicializálnak és nyomtatnak a változók egyesítése után. Itt a tartalma $ string1 és $ string2 összevonásra és nyomtatásra kerül.

concat.sh

#!/bin/bash

#Inicializálja az első karakterlánc -változót
karakterlánc1='Szeretem '
#Inicializálja a második karakterlánc -változót
karakterlánc2='Bash programozás'
#Nyomtassa ki mindkét karakterlánc kombinálása után
kidobta '$ string1$ string2'

Kimenet:

Futtassa a szkriptet.

$bashconcat.sh

A szkript futtatása után a következő kimenet jelenik meg.

Ebből az oktatóanyagból többet megtudhat a karakterláncok összekapcsolásáról.

Ugrás a tetejére

A karakterlánc összehasonlítása

A Bash különböző típusú operátorokat használ a karakterláncok adatainak összehasonlítására. Hozzon létre egy bash fájlt a következő szkripttel, hogy megmutassa, hogyan lehet összehasonlítani két karakterlánc -adatot. A karakterlánc értéke a szkript bemenetének számít, amelyet egy másik karakterlánccal hasonlítanak össze. Ha az érték megegyezik, akkor egy üzenet, Szereted a Python -t különben kinyomtatásra kerül Tetszik a PERL nyomtatásra kerül.

hasonlítsa össze.sh

#!/bin/bash
kidobtaAdjon meg bármilyen karakterlánc értéket
olvasszöveg

#Ellenőrizze, hogy a bemeneti adatok megegyeznek -e a Pythonéval
ha [ $ szöveg=='Piton' ];azután
kidobta - Szereted a Python -t.
más
kidobta 'Tetszik PERL'
lenni

Kimenet:

Futtassa a szkriptet.

$bashhasonlítsa össze.sh

A következő kimenet jelenik meg a szkript futtatása után, ahol a bemeneti érték „PERL”.

A karakterláncok összehasonlításáról többet tudhat meg innen ezt az oktatóanyagot .

Karakterlánc felosztása

A Bash nem rendelkezik beépített felosztási funkcióval a karakterlánc-adatok felosztására. A karakterlánc -adatok bash -ban többféleképpen oszthatók fel, különböző típusú elválasztók alapján. Hozzon létre egy bash fájlt a következő parancsfájllal, amely megmutatja, hogyan oszthatók fel a karakterlánc -adatok bash -ra. A karakterlánc értéke bemenetként jelenik meg. Ez a szkript felosztja a (z) értékét $ szöveg tér alapján. Itt, a IFS változó a határoló beállítására szolgál. `olvasni` parancsot itt használjuk a szövegérték felosztására és az értékek tömbbe történő tárolására. számára ciklus a tömb iterálására és az egyes elemek értékének kinyomtatására szolgál.

osztott.sh

#!/bin/bash
#Írja be a karakterlánc értékét
kidobtaAdjon meg egy karakterlánc értékét
olvasszöveg
# Állítsa be az elválasztót
IFS=''
#Ossza fel a $ szöveg értékét egy tömbbe a szóközhatároló alapján
olvas -nak nekarr<<< '$ szöveg'
# Nyomtassa ki a tömb minden értékét
számáraértékban ben '$ {arr [@]}';
tedd
printf '$ értékű n'
Kész

Kimenet:

Futtassa a szkriptet.

$bashosztott.sh

A bemenet felvétele után a következő kimenet jelenik meg: Tanuld meg a Bash programozást . Ez a beviteli érték egy három szóból álló szöveg. Tehát a karakterlánc három részre oszlik.

A karakterláncok összehasonlításáról többet tudhat meg innen ezt az oktatóanyagot .

A karakterlánc kis- és nagybetűinek megváltoztatása

A legtöbb szkriptnyelv beépített funkcióval rendelkezik a karakterlánc-adatok kis- és nagybetűinek megváltoztatásához. De a karakterlánc -adatok esetét a bash használatával lehet megváltoztatni a használatával `tr` paranccsal vagy használatával ':felső' és ':Alsó' kulcsszavak. Hozzon létre egy bash fájlt a következő szkripttel, hogy megtudja, hogyan lehet a kis- és nagybetűket megváltoztatni. Itt az első karakterlánc -adatok nagybetűkké konvertálhatók a használatával '^^' szimbólumot, és a második karakterláncot kisbetűvé alakítja a használatával `tr` parancs. `tr` parancs megkeresi a karakterlánc összes nagybetűjét, és a karaktereket kisbetűvé alakítja át.

eset.sh

#!/bin/bash

#Inicializálja az első karakterlánc -adatokat
szöveg1='[email protected]'

#Nyomtassa ki a $ text1 értékét az összes karakter nagybetűsre konvertálásával
kidobta $ {email ^^}

#Inicializálja a második karakterlánc -adatokat
szöveg2= 'Bash programozás alapjai'

#Nyomtassa ki a $ text2 értékét az összes nagybetű kisbetűsre konvertálásával
kidobta $ text2 | NS [:felső:] [:Alsó:]

Kimenet:

Futtassa a szkriptet.

$basheset.sh

A szkript futtatása után a következő kimenet jelenik meg.

A karakterláncok összehasonlításáról többet tudhat meg innen ezt az oktatóanyagot .

Ugrás a tetejére

String adatok olvasása a cikluson keresztül

A karakterlánc adatai bármely programozási nyelv karakter tömbjeként működnek. Hogyan ' számára A hurok a bash -ban lévő karakterlánc -adatok olvasásához használható ebben a részben. Hozzon létre egy alapfájlt a következő szkripttel a karakterlánc értékének minden egyes részének olvasásához a ciklus használatával.

readstr.sh

#!/bin/bas
# Olvassa el a szöveg minden szavát a ciklus használatával
számáraértékban benBash programozásszámáraa Kezdők
tedd
kidobta $ értékű
Kész

Kimenet:

Futtassa a szkriptet.

$bashreadstr.sh

A szkript futtatása után a következő kimenet jelenik meg.

Ha többet szeretne tudni a karakterlánc -adatok iterálásáról, használja a hurkot a ezt az oktatóanyagot .

Ugrás a tetejére

Visszaadási kódok visszaadása egy szkriptből, és egy másik szkript befogása

Az egyik bash szkript elkaphatja a visszatérési kódokat egy másik szkriptből a szkript hívásával és használatával '$?' olvasni a visszatérési értéket. Tegyük fel, hogy egy bash fájl először.sh végrehajtás után visszaad egy kódot. Hozzon létre egy másik bash fájlt második.sh és adja hozzá a következő szkriptet a visszatérési érték rögzítéséhez és néhány egyéb feladat elvégzéséhez. Az alábbiakban mindkét fájl kódját adjuk meg. először.sh fájl lesz hívva második.sh fájlt a szkript elején. először.sh visszaad egy kilépési kódot a bemeneti érték alapján. second.sh elkapja a kódot '$?' és hasonlítsa össze az 1 -gyel. Ha mindkét érték egyenlő, akkor kinyomtatódik, A bemeneti szám nagyobb, mint 100 , különben kinyomtatja, A bemeneti szám 100 -nál kisebb vagy egyenlő .

először.sh

#!/bin/bash

kidobta 'Adjon meg egy számértéket'
olvasn

# Ellenőrizze, hogy a bemeneti érték 100 -nál kisebb vagy egyenlő -e, vagy sem
ha [[ $ n -az 100 ]]
azután
kijárat 0
más
kijárat 1
lenni

második.sh

#! /bin/bash

#Végezze el a fájlt, először.sh
bash 'first.sh'

#Ellenőrizze, hogy a visszatérési kód 1 vagy nem
ha [ $? -eq 1 ]
azután
kidobta 'A bemeneti szám nagyobb, mint 100'
más
kidobta 'A bemeneti szám kisebb vagy egyenlő 100'
lenni

Kimenet:

Futtassa a szkriptet.

$bashmásodik.sh

A következő kimenet jelenik meg, ha a szkriptet kétszer 55 és 110 futtatja.

Ugrás a tetejére

Olvasás és írás fájlokba

A fájlok olvasása és írása a bash programozás általános követelményei. A Bash nem rendelkezik olyan beépített funkcióval, mint egy másik nyelv a fájl olvasásához vagy írásához. A fájl bash -ban történő olvasásának több módja is van. A fájlok bash -ban történő olvasásának vagy írásának leggyakoribb módja a használata `macska` parancs. Ez a parancs azonban a fájl teljes tartalmának egyidejű olvasására szolgál. Bármely fájlt soronként is olvashat bármely hurok és `olvasni` parancs. Az átirányító operátor használatával '>' , adatokat írhat a bash bármely fájljába. Ha adatokat szeretne csatolni bármilyen fájlhoz, akkor használnia kell '>>' operátor. Az olvasási és írási fájlműveletek jelen szakasz következő részében láthatók.

Fájl olvasása bash -ban

Hozzon létre egy bash fájlt a következő szkripttel, hogy elolvashassa a ' hardver.txt ’. Ennek a fájlnak a tartalmát az alábbiakban ismertetjük. A szkriptben a fájl teljes tartalma olvasható `macska` parancs első és következő, míg a ciklus a fájl soronkénti olvasására szolgál.

hardver.txt

Monitor
Billentyűzet
Egér
Scanner
Nyomtató

readfile.sh

#!/bin/bash

kidobta 'Fájl olvasása a cat parancs használatával'

# Olvassa el a fájl tartalmát a 'cat' paranccsal
tartalom=``macskahardver.txt``
kidobta $ tartalom

kidobta 'Fájl olvasása soronként hurok használatával'

# Rendelje hozzá a fájlnevet
fájl név='hardware.txt'

# A fájl minden sorát a ciklus minden iterációja olvassa
míg olvasvonal;
tedd
# nyomtassa ki a sort
kidobta $ sor
Kész<$ fájlnév

Kimenet:

Futtassa a következő parancsokat.

$macskahardver.txt
$bashreadfile.sh

Itt az első parancs kinyomtatja a fájl tartalmát, hardver.txt bash szkript futtatása nélkül, a második parancs pedig a readfile.sh és a használatával kétszer nyomtassa ki a fájl tartalmát `macska` parancsot és `olvasni` parancsot a while hurokkal. Ezt meglátogathatja bemutató hogy többet tudjon a fájlok soronkénti olvasásáról.

Fájl írása bash -ban

Hozzon létre egy bash fájlt a következő szkripttel, hogy új tartalmat írjon egy új fájlba, és adatokat fűzzen hozzá.

writefile.sh

#!/bin/bash

kidobta 'Írjon be egy szöveget'
#Olvassa el a karakterlánc adatait
olvasstr1
#Adjon hozzá bemeneti adatokat a fájlhoz először
kidobta $ str1 >test.txt

kidobta 'Írjon be más szöveget'
#Olvasson újabb karakterlánc -adatokat
olvasstr2
#Adjon hozzá bemeneti adatokat a fájl végéhez
kidobta $ str2 >>test.txt

#Mutassa meg a fájl teljes tartalmát
kidobta ``macskatest.txt``

Kimenet:

Futtassa a szkriptet.

$bashwritefile.sh

A szkript futtatása után a következő kimenet jelenik meg.

Ugrás a tetejére

Csövek

A cső bármely parancs kimenetét más parancsbemenetre irányítja át. Különféle bash parancsok között használható, hogy konkrét kimenetet hozzon létre. A szabványos bemenet csövön keresztül csatlakozik a Linux szabványos kimenetéhez. A kívánt kimenet eléréséhez a parancsot sorba kell állítani a pipe (|) szimbólummal. Két vagy több parancs együtt hajtható végre egyetlen parancsban a pipe használatával. Ugyanazon feladat végrehajtásához több parancsot kell végrehajtania több sorban cső nélkül. Tehát a cső használata nagyon előnyös sokféle feladat rövid elvégzéséhez.

szintaxis:

parancs1|parancs2|...

Itt a parancs1 kimenete kerül átadásra a parancs2 bemeneteként.

Ugyanezt a feladatot csővel és cső nélkül is elvégezzük a szakasz következő részében. Tegyük fel, hogy egy szöveges fájl neve marks.txt a következő adatokkal együtt van megadva.

marks.txt

Asraf CSE-409 79

Kabir CSE-304 95

Keya CSE-101 67

Asraf CSE-304 88

Keya CSE-409 90

Asraf CSE-101 92

Rendeznie kell a fájl adatait, és meg kell találnia és ki kell nyomtatnia a „K” tanulónév összes bejegyzését igen ' . Ezt a feladatot több parancs futtatásával is elvégezheti a következő részben bemutatott cső használata nélkül. A kívánt parancs eléréséhez a következő parancsokat kell futtatni. Az első parancs rendezi a fájlt. A második parancs megkeresi a „K igen ' segítségével ` markolat `parancsolja és tárolja a kimenetet egy temp.txt fájlt. A harmadik parancs számolja az a összes sorát temp.txt fájl használatával 'wc' parancs.

$fajtamarks.txt
$markolat 'Keya'marks.txt>temp.txt
$WC -aztemp.txt

Kimenet:

A tanuló két „Keya” bejegyzése létezik az aktában. Tehát a fenti parancsok futtatása után a következő kimenet jelenik meg.

Könnyen egyesítheti a fenti három parancsot, és ugyanazt a kimenetet kaphatja, ha egyetlen parancsot futtat egy csővel, amely a következő parancsban látható. Itt nincs szükség ideiglenes fájlra a kimenet megszerzéséhez. Itt a `kimenete fajta `parancs lesz bemenetként` markolat `parancs és a` kimenete markolat `parancs lesz bemenetként a 'wc' parancs.

$fajtamarks.txt| markolat 'Keya' | WC -az

Kimenet:

A fenti parancs futtatásával a következő kimenetet kapja, mint az előző parancs kimenetét. A parancs kimenete 2 lesz.

Ugrás a tetejére

Következtetés:

A bash szkriptnyelv leghasznosabb és szükséges témáit ebben az oktatóanyagban próbáljuk bemutatni. Remélhetőleg az olvasó hasznára válik az oktatóanyag elolvasásának, és hatékonyabban tudja megírni a bash szkriptet.