logo

Primeri lupinskega skripta

Za vse distribucije Linuxa je lupinski skript kot čarobna palica, ki avtomatizira proces, uporabnikom prihrani čas in poveča produktivnost. Ta vadnica za skriptiranje vas bo seznanila s 25 plus primeri skriptiranja.

Toda preden preidemo na temo lupinsko skriptiranje primeri, razumejmo lupinski skript in dejanske primere uporabe lupinskega skripta.



Kaj je Shell Script?

No, lupina je a CLI ( tolmač ukazne vrstice ), ki se izvaja v besedilnem oknu, kjer lahko uporabniki upravljajo in izvajajo ukaze lupine. Po drugi strani pa postopek pisanja nabora ukazov, ki se izvajajo v sistemu Linux. Datoteka, ki vključuje takšna navodila, se imenuje bash skript.

Uporaba lupinskih skriptov

Spodaj je nekaj pogostih uporab lupinskega skripta:

  • Avtomatizacija nalog – Uporablja se lahko za avtomatizacijo ponavljajočih se nalog, kot so običajne varnostne kopije in nameščanje programske opreme.
  • Prilagajanje – Uporabite lahko lupinske skripte za oblikovanje okolja ukazne vrstice in enostavno opravljanje svoje naloge glede na potrebe.
  • Upravljanje datotek – Lupinske skripte je mogoče uporabiti tudi za upravljanje in manipulacijo datotek in imenikov, kot so premikanje, kopiranje, preimenovanje ali brisanje datotek.

Primeri lupinskih skriptov v Linuxu

1) Kaj označuje znak (#!) na začetku lupinskega skripta?

The drevo (#!) na začetku skripta označuje tolmača, ki naj se uporabi za izvedbo skripta. Sistemu pove, katera lupina ali tolmač naj interpretira ukaze skripta.



Na primer: Recimo, da imamo skript z imenom myscript.sh napisano v lupini Bash:

vadnica za mikrostoritve
shebang

shebang

V tem primeru:



  • #!/bin/bash na začetku skripta pomeni, da je treba skript interpretirati z lupino Bash.
  • Ukazi echo se uporabljajo za tiskanje sporočil na terminal.

2) Kako zaženete lupinski skript iz ukazne vrstice?

Če želite zagnati lupinski skript iz ukazne vrstice, moramo slediti tem korakom:

  • Prepričajte se, da ima skriptna datoteka dovoljenja za izvedljivo uporabo ukaz chmod :
chmod +x myscript.sh>
  • Izvedite skript z njegovim imenom datoteke:
./myscript.sh>

Tukaj morate zamenjati myscrtipt.sh z imenom vašega skripta.

3) Napišite lupinski skript, ki natisne techcodeview.com na terminal.

Ustvarite ime skripta `myscript.sh` (uporabljamo ` Ker ` urejevalnik, izberete lahko poljuben urejevalnik)

vim myscript.sh>

#!/bin/bash
# Ta skript natisne techcodeview.com na terminal
echo techcodeview.com

tiskano ime

tiskano ime

Naš skript naredimo izvršljiv z uporabo `chmod +x`, nato ga izvedemo z `./myscipt.sh` in dobimo želeni rezultat techcodeview.com.

4) Pojasnite namen ukaza echo v skriptni lupini.

The ukaz echo se uporablja za prikaz besedila ali spremenljivk na terminalu. Običajno se uporablja za tiskanje sporočil, vrednosti spremenljivk in generiranje izhodnih podatkov programa.

434

ukaz echo

V tem primeru smo izvedli `echo` na terminalu neposredno, saj deluje enako znotraj skripta lupine.

5) Kako lahko dodelite vrednost spremenljivki v lupinskem skriptu?

Spremenljivkam so dodeljene vrednosti z uporabo operatorja dodeljevanja =.

Na primer:

#!/bin/bash
# Dodeljevanje vrednosti spremenljivki
ime=Jayesh
starost=21
echo $name $age

Pojasnilo:

  • Spremenljivki imena je dodeljena vrednost Jayesh.
  • Spremenljivki starosti je pripisana vrednost 21.
  • echo se uporablja za tiskanje in `$name` `$age` se uporablja za klic vrednosti, shranjene v spremenljivkah.

435

6) Napišite lupinski skript, ki kot vhod sprejme uporabniško ime in ga pozdravi.

Ustvarite ime skripta `example.sh`.

#!/bin/bash
# Vprašajte uporabnika za njegovo ime
echo Kako ti je ime?
preberi ime
# Pozdravite uporabnika
echo Pozdravljeni, $name! Lepo te je bilo srečati.

Pojasnilo:

  • #!/bin/bash: To je shebang linija. Sistemu pove, naj za izvedbo skripta uporabi tolmač Bash.
  • # Vprašajte uporabnika za njegovo ime: To je komentar. Zagotavlja kontekst o prihajajoči kodi. Tolmač ignorira komentarje.
  • echo Kako ti je ime?: Ukaz echo se uporablja za prikaz besedila v dvojnih narekovajih na terminalu.
  • preberi ime: Ukaz za branje počaka, da uporabnik vnese besedilo, in ga shrani v ime spremenljivke.
  • echo Pozdravljeni, $name! Veseli me.: Ta vrstica uporablja ukaz echo za tiskanje pozdravnega sporočila, ki vključuje vrednost spremenljivke imena, ki je bila zbrana iz uporabnikovega vnosa.

436

7) Kako dodate komentarje lupinskemu skriptu?

Komentarji v skriptni lupini se uporabljajo za zagotavljanje razlag ali konteksta kode. Tolmač jih ignorira in so namenjene samo ljudem, ki berejo scenarij. Komentarje lahko dodate s simbolom #.

#!/bin/bash
# To je komentar, ki pojasnjuje namen skripta
odmev gfg

8) Ustvarite lupinski skript, ki preveri, ali datoteka obstaja v trenutnem imeniku.

Tukaj je skript, ki preveri, ali datoteka z imenom example.txt obstaja v trenutnem imeniku:

#!/bin/bash
datoteka=primer.txt
# Preverite, ali datoteka obstaja
if [ -e $file ]; potem
echo Datoteka obstaja: $file
drugače
echo Datoteke ni mogoče najti: $file
biti

Pojasnilo:

  1. #!/bin/bash: To je shebang vrstica, ki določa tolmača (/bin/bash), ki bo uporabljen za izvajanje skripta.
  2. file=example.txt: Ta vrstica definira datoteko spremenljivke in ji dodeli vrednost example.txt. To lahko zamenjate z imenom datoteke, ki jo želite preveriti.
  3. if [ -e $file ]; potem: Ta vrstica začne stavek if. Pogoj [ -e $datoteka ] preveri, ali datoteka, določena z vrednostjo spremenljivke datoteke, obstaja. Zastavica -e se uporablja za preverjanje obstoja datoteke.
  4. echo Datoteka obstaja: $file: Če je pogoj resničen (tj. datoteka obstaja), ta vrstica natisne sporočilo, ki označuje, da datoteka obstaja, skupaj z imenom datoteke.
  5. else: Če je pogoj napačen (tj. datoteka ne obstaja), skript izvede kodo pod vejo else.
  6. echo Datoteke ni bilo mogoče najti: $file: Ta vrstica natisne sporočilo o napaki, ki označuje, da navedena datoteka ni bila najdena, skupaj z imenom datoteke.
  7. fi: Ta vrstica označuje konec stavka if.
Iskanje datoteke

Iskanje datoteke

9) Kakšna je razlika med enojnimi narekovaji (‘) in dvojnimi narekovaji () v skriptni lupini?

Enojni narekovaji (‘) in dvojni narekovaji () se uporabljajo za zapiranje nizov v skriptno lupino, vendar se obnašajo različno:

  • Enojni narekovaji: vse med enojnimi narekovaji se obravnava kot dobesedni niz. Imena spremenljivk in večina posebnih znakov niso razširjeni.
  • Dvojni narekovaji: Spremenljivke in določeni posebni znaki v dvojnih narekovajih so razširjeni. Vsebina je predmet zamenjave spremenljivke in zamenjave ukaza.

#!/bin/bash

abcd=Pozdravljeni
echo '$abcd' # Izhod: $abcd
echo $abcd # Izhod: Pozdravljeni

10) Kako lahko uporabite argumente ukazne vrstice v lupinskem skriptu?

Argumenti ukazne vrstice so vrednosti, ki se zagotovijo skriptu, ko se ta izvede. Do njih je mogoče dostopati znotraj skripta z uporabo posebnih spremenljivk, kot so , itd., kjer predstavlja prvi argument, predstavlja drugi argument itd.

Na primer: Če ime našega skripta v `example.sh`

#!/bin/bash

echo Ime skripta:

Za vse distribucije Linuxa je lupinski skript kot čarobna palica, ki avtomatizira proces, uporabnikom prihrani čas in poveča produktivnost. Ta vadnica za skriptiranje vas bo seznanila s 25 plus primeri skriptiranja.

Toda preden preidemo na temo lupinsko skriptiranje primeri, razumejmo lupinski skript in dejanske primere uporabe lupinskega skripta.

Kaj je Shell Script?

No, lupina je a CLI ( tolmač ukazne vrstice ), ki se izvaja v besedilnem oknu, kjer lahko uporabniki upravljajo in izvajajo ukaze lupine. Po drugi strani pa postopek pisanja nabora ukazov, ki se izvajajo v sistemu Linux. Datoteka, ki vključuje takšna navodila, se imenuje bash skript.

Uporaba lupinskih skriptov

Spodaj je nekaj pogostih uporab lupinskega skripta:

  • Avtomatizacija nalog – Uporablja se lahko za avtomatizacijo ponavljajočih se nalog, kot so običajne varnostne kopije in nameščanje programske opreme.
  • Prilagajanje – Uporabite lahko lupinske skripte za oblikovanje okolja ukazne vrstice in enostavno opravljanje svoje naloge glede na potrebe.
  • Upravljanje datotek – Lupinske skripte je mogoče uporabiti tudi za upravljanje in manipulacijo datotek in imenikov, kot so premikanje, kopiranje, preimenovanje ali brisanje datotek.

Primeri lupinskih skriptov v Linuxu

1) Kaj označuje znak (#!) na začetku lupinskega skripta?

The drevo (#!) na začetku skripta označuje tolmača, ki naj se uporabi za izvedbo skripta. Sistemu pove, katera lupina ali tolmač naj interpretira ukaze skripta.

Na primer: Recimo, da imamo skript z imenom myscript.sh napisano v lupini Bash:

shebang

shebang

V tem primeru:

  • #!/bin/bash na začetku skripta pomeni, da je treba skript interpretirati z lupino Bash.
  • Ukazi echo se uporabljajo za tiskanje sporočil na terminal.

2) Kako zaženete lupinski skript iz ukazne vrstice?

Če želite zagnati lupinski skript iz ukazne vrstice, moramo slediti tem korakom:

  • Prepričajte se, da ima skriptna datoteka dovoljenja za izvedljivo uporabo ukaz chmod :
chmod +x myscript.sh>
  • Izvedite skript z njegovim imenom datoteke:
./myscript.sh>

Tukaj morate zamenjati myscrtipt.sh z imenom vašega skripta.

3) Napišite lupinski skript, ki natisne techcodeview.com na terminal.

Ustvarite ime skripta `myscript.sh` (uporabljamo ` Ker ` urejevalnik, izberete lahko poljuben urejevalnik)

vim myscript.sh>

#!/bin/bash
# Ta skript natisne techcodeview.com na terminal
echo techcodeview.com

tiskano ime

tiskano ime

Naš skript naredimo izvršljiv z uporabo `chmod +x`, nato ga izvedemo z `./myscipt.sh` in dobimo želeni rezultat techcodeview.com.

4) Pojasnite namen ukaza echo v skriptni lupini.

The ukaz echo se uporablja za prikaz besedila ali spremenljivk na terminalu. Običajno se uporablja za tiskanje sporočil, vrednosti spremenljivk in generiranje izhodnih podatkov programa.

434

ukaz echo

V tem primeru smo izvedli `echo` na terminalu neposredno, saj deluje enako znotraj skripta lupine.

5) Kako lahko dodelite vrednost spremenljivki v lupinskem skriptu?

Spremenljivkam so dodeljene vrednosti z uporabo operatorja dodeljevanja =.

Na primer:

#!/bin/bash
# Dodeljevanje vrednosti spremenljivki
ime=Jayesh
starost=21
echo $name $age

Pojasnilo:

  • Spremenljivki imena je dodeljena vrednost Jayesh.
  • Spremenljivki starosti je pripisana vrednost 21.
  • echo se uporablja za tiskanje in `$name` `$age` se uporablja za klic vrednosti, shranjene v spremenljivkah.

435

6) Napišite lupinski skript, ki kot vhod sprejme uporabniško ime in ga pozdravi.

Ustvarite ime skripta `example.sh`.

#!/bin/bash
# Vprašajte uporabnika za njegovo ime
echo Kako ti je ime?
preberi ime
# Pozdravite uporabnika
echo Pozdravljeni, $name! Lepo te je bilo srečati.

Pojasnilo:

  • #!/bin/bash: To je shebang linija. Sistemu pove, naj za izvedbo skripta uporabi tolmač Bash.
  • # Vprašajte uporabnika za njegovo ime: To je komentar. Zagotavlja kontekst o prihajajoči kodi. Tolmač ignorira komentarje.
  • echo Kako ti je ime?: Ukaz echo se uporablja za prikaz besedila v dvojnih narekovajih na terminalu.
  • preberi ime: Ukaz za branje počaka, da uporabnik vnese besedilo, in ga shrani v ime spremenljivke.
  • echo Pozdravljeni, $name! Veseli me.: Ta vrstica uporablja ukaz echo za tiskanje pozdravnega sporočila, ki vključuje vrednost spremenljivke imena, ki je bila zbrana iz uporabnikovega vnosa.

436

7) Kako dodate komentarje lupinskemu skriptu?

Komentarji v skriptni lupini se uporabljajo za zagotavljanje razlag ali konteksta kode. Tolmač jih ignorira in so namenjene samo ljudem, ki berejo scenarij. Komentarje lahko dodate s simbolom #.

#!/bin/bash
# To je komentar, ki pojasnjuje namen skripta
odmev gfg

8) Ustvarite lupinski skript, ki preveri, ali datoteka obstaja v trenutnem imeniku.

Tukaj je skript, ki preveri, ali datoteka z imenom example.txt obstaja v trenutnem imeniku:

#!/bin/bash
datoteka=primer.txt
# Preverite, ali datoteka obstaja
if [ -e $file ]; potem
echo Datoteka obstaja: $file
drugače
echo Datoteke ni mogoče najti: $file
biti

Pojasnilo:

  1. #!/bin/bash: To je shebang vrstica, ki določa tolmača (/bin/bash), ki bo uporabljen za izvajanje skripta.
  2. file=example.txt: Ta vrstica definira datoteko spremenljivke in ji dodeli vrednost example.txt. To lahko zamenjate z imenom datoteke, ki jo želite preveriti.
  3. if [ -e $file ]; potem: Ta vrstica začne stavek if. Pogoj [ -e $datoteka ] preveri, ali datoteka, določena z vrednostjo spremenljivke datoteke, obstaja. Zastavica -e se uporablja za preverjanje obstoja datoteke.
  4. echo Datoteka obstaja: $file: Če je pogoj resničen (tj. datoteka obstaja), ta vrstica natisne sporočilo, ki označuje, da datoteka obstaja, skupaj z imenom datoteke.
  5. else: Če je pogoj napačen (tj. datoteka ne obstaja), skript izvede kodo pod vejo else.
  6. echo Datoteke ni bilo mogoče najti: $file: Ta vrstica natisne sporočilo o napaki, ki označuje, da navedena datoteka ni bila najdena, skupaj z imenom datoteke.
  7. fi: Ta vrstica označuje konec stavka if.
Iskanje datoteke

Iskanje datoteke

9) Kakšna je razlika med enojnimi narekovaji (‘) in dvojnimi narekovaji () v skriptni lupini?

Enojni narekovaji (‘) in dvojni narekovaji () se uporabljajo za zapiranje nizov v skriptno lupino, vendar se obnašajo različno:

  • Enojni narekovaji: vse med enojnimi narekovaji se obravnava kot dobesedni niz. Imena spremenljivk in večina posebnih znakov niso razširjeni.
  • Dvojni narekovaji: Spremenljivke in določeni posebni znaki v dvojnih narekovajih so razširjeni. Vsebina je predmet zamenjave spremenljivke in zamenjave ukaza.

#!/bin/bash

abcd=Pozdravljeni
echo '$abcd' # Izhod: $abcd
echo $abcd # Izhod: Pozdravljeni

10) Kako lahko uporabite argumente ukazne vrstice v lupinskem skriptu?

Argumenti ukazne vrstice so vrednosti, ki se zagotovijo skriptu, ko se ta izvede. Do njih je mogoče dostopati znotraj skripta z uporabo posebnih spremenljivk, kot so $1, $2 itd., kjer $1 predstavlja prvi argument, $2 predstavlja drugi argument itd.

Na primer: Če ime našega skripta v `example.sh`

#!/bin/bash

echo Ime skripta: $0
echo Prvi argument: $1
echo Drugi argument: $2

Če zaženemo skript z `.example.sh hello_1 hello_2`, bo izpisal:

argumenti cli

argumenti cli

11) Kako uporabljate zanko for za ponavljanje po seznamu vrednosti?

Ustvarite ime skripta `example.sh`.

#!/bin/bash

sadje=(jabolko banana češnjev datum)
za sadje v ${fruits[@]}; narediti
echo Trenutno sadje: $sadje
Končano

Pojasnilo:

Vrstica `fruits=` ustvari matriko z imenom sadje s štirimi elementi: jabolko, banana, češnja in datelj.

  • za sadje v ${fruits[@]}; do: Ta vrstica začne zanko for. Tukaj je, kaj vsak del pomeni:
  • za sadje: To deklarira spremenljivko zanke, imenovano sadje. V vsaki ponovitvi zanke bo fruit vseboval vrednost trenutnega elementa iz matrike fruits.
  • ${fruits[@]}: To je razširitev matrike, ki vzame vse elemente iz matrike fruits. Sintaksa ${…} zagotavlja, da se vsak element obravnava kot ločena postavka.
  • do: Ta ključna beseda označuje začetek telesa zanke.
  • echo Trenutni sad: $fruit: Znotraj zanke ta vrstica uporablja ukaz echo za prikaz trenutne vrednosti spremenljivke zanke fruit. Za vsako sadje v nizu natisne sporočilo, kot je trenutno sadje: jabolko.
  • done: Ta ključna beseda označuje konec telesa zanke. Skriptu sporoči, da se je zanka končala.
za zanko

za zanko

12) Napišite lupinski skript, ki izračuna vsoto celih števil od 1 do N z uporabo zanke.

Ustvarite ime skripta `example.sh`.

#!/bin/bash

echo Vnesite številko (N):
preberi N
vsota=0
for (( i=1; i<=$N; i++ )); narediti
vsota=$((vsota + i))
Končano
echo Vsota celih števil od 1 do $N je: $sum

Pojasnilo:
Skript se začne tako, da vas prosi, da vnesete številko (N) z read. Ta številka bo določila, kolikokrat se bo zanka zagnala.

  1. Spremenljivka sum je inicializirana na 0. Ta spremenljivka bo sledila vsoti celih števil.
  2. Zanka for se začne z for (( i=1; i<=$N; i++ )). Ta struktura zanke se uporablja za ponavljanje niza dejanj določeno število krat, v tem primeru od 1 do vrednosti N.
  3. Znotraj zanke se zgodijo te stvari:
    • i=1 nastavi spremenljivko zanke i na 1 na začetku vsake iteracije.
    • Pogoj zanke i<=$N preveri, ali je i še vedno manjši ali enak danemu številu N.
    • Če je pogoj resničen, se telo zanke izvede.
    • sum=$((sum + i)) izračuna novo vrednost vsote tako, da ji prišteje trenutno vrednost i. To sešteje cela števila od 1 do trenutne vrednosti i.
  4. Po vsaki ponovitvi i++ poveča vrednost i za 1.
  5. Zanka se nadaljuje, dokler pogoj i<=$N ne postane napačen (ko i postane večji od N).
  6. Ko je zanka končana, skript prikaže vsoto celih števil od 1 do vnesenega števila N.

439

13) Ustvarite skript, ki išče določeno besedo v datoteki in šteje njene pojavitve.

Ustvarite ime skripta `word_count.sh`

#!/bin/bash

echo Vnesite besedo za iskanje:
preberi ciljno_besedo
echo Vnesite ime datoteke:
preberi ime datoteke
count=$(grep -o -w $target_word $filename | wc -l)
echo Beseda '$target_word' se pojavi $count-krat v '$filename'.

Pojasnilo:

  • echo Vnesite besedo za iskanje:: Ta vrstica prikaže sporočilo, ki uporabnika prosi, da vnese besedo, ki jo želi iskati v datoteki.
  • read target_word: Ta vrstica prebere vnos uporabnika in ga shrani v spremenljivko z imenom target_word.
  • echo Vnesite ime datoteke:: Ta vrstica prikaže sporočilo, ki uporabnika prosi, da vnese ime datoteke, v kateri želi iskati.
  • preberi ime datoteke: Ta vrstica prebere vnos, ki ga zagotovi uporabnik, in ga shrani v spremenljivko z imenom ime datoteke.
  • count=$(grep -o -w $target_word $filename | wc -l): Ta vrstica opravlja glavno delo skripta. Razčlenimo ga še naprej:
    • grep -o -w $target_word $filename: Ta del ukaza išče pojavitve ciljne_besede v navedenem imenu datoteke. Možnosti -o in -w zagotavljata, da se štejejo samo celotne besede.
    • |: To je cev, ki sprejme izhod prejšnjega ukaza in ga pošlje kot vhod v naslednji ukaz.
    • wc -l: Ta del ukaza uporablja ukaz wc za štetje števila vrstic v vnosu. Možnost -l posebej šteje vrstice.
    • Celoten ukaz izračuna število pojavitev ciljne_besede v datoteki in to število dodeli spremenljivki coun

441

14) Pojasnite razlike med standardnim izhodom (stdout) in standardno napako (stderr).

Glavna razlika med standardnim izhodom (stdout) in standardno napako (stderr) je naslednja:

  • Standardni izhod (stdout): To je privzeti izhodni tok, kamor gre običajni izhod ukaza. Privzeto je prikazan na terminalu. Lahko ga preusmerite v datoteko z>.
  • Standardna napaka (stderr): To je izhodni tok za sporočila o napakah in opozorila. Privzeto je prikazan tudi na terminalu. Lahko ga preusmerite v datoteko z uporabo 2>.

15) Pojasnite koncept pogojnih stavkov v skriptni lupini.

Pogojni stavki v skriptni lupini omogočajo sprejemanje odločitev in nadzor nad potekom našega skripta na podlagi določenih pogojev. Našemu skriptu omogočajo izvajanje različnih nizov ukazov, odvisno od tega, ali je določen pogoj resničen ali napačen. Primarni pogojni stavki v skriptni lupini so stavek if, stavek elif (neobvezno) in stavek else (izbirno).

Tukaj je osnovna struktura pogojnega stavka v skriptni lupini:

če [ pogoj ]; potem
# Ukazi za izvedbo, če je pogoj resničen
elif [ drug_pogoj ]; potem
# Ukazi za izvedbo, če je other_condition resničen (neobvezno)
drugače
# Ukazi za izvedbo, če nobeden od pogojev ni resničen (neobvezno)
biti

Pojasnilo:

  • [pogoj] = Ukaz, ki ovrednoti pogoj in vrne resnično (0) ali napačno (ničelno) izhodno stanje.
  • then = To je ključna beseda, ki nakazuje, da bodo ukazi, ki ji sledijo, izvedeni, če je pogoj ocenjen kot resničen.
  • elif = (okrajšava za else if) To je razdelek, ki nam omogoča, da določimo dodatne pogoje za preverjanje.
  • else = to je razdelek, ki vsebuje ukaze, ki bodo izvedeni, če nobeden od pogojev ni resničen.
  • fi = To je ključna beseda, ki označuje konec pogojnega bloka.

16) Kako berete vrstice iz datoteke znotraj lupinskega skripta?

Za brati vrstice iz datoteke znotraj lupinskega skripta, lahko uporabimo različne metode, vendar je eden od pogostih pristopov uporaba zanke while v kombinaciji z ukazom read. Takole lahko to storimo:

#!/bin/bash
file=/home/jayeshkumar/jayesh.txt
# Preverite, ali datoteka obstaja
if [ -e $file ]; potem
medtem ko IFS= preberi -r vrstico; narediti
echo Branje vrstice: $line
# Tukaj dodajte svojo logiko obdelave
končano <$file
drugače
echo Datoteke ni mogoče najti: $file
biti

Pojasnilo:

  1. #!/bin/bash: To je shebang vrstica, ki določa tolmača (/bin/bash), ki bo uporabljen za izvajanje skripta.
  2. file=/home/jayeshkumar/jayesh.txt: Ta vrstica definira datoteko spremenljivke in dodeli celotno pot do datoteke jayesh.txt v imeniku /home/jayeshkumar. Spremenite to pot, da bo ustrezala dejanski poti datoteke, ki jo želite prebrati.
  3. if [ -e $file ]; potem: Ta vrstica začne stavek if. Preveri, ali datoteka, podana s spremenljivko $file, obstaja. Zastavica -e preverja obstoj datoteke.
  4. medtem ko IFS= preberi -r vrstico; do: Ta vrstica sproži zanko while, ki bere vrstice iz datoteke.
    • IFS=: IFS (notranje ločilo polj) je nastavljeno na prazno vrednost, da ohrani presledke na začetku in na koncu.
    • read -r line: To prebere trenutno vrstico iz datoteke in jo shrani v spremenljivo vrstico.
  5. echo Prebrana vrstica: $line: Ta vrstica natisne vsebino vrstice, ki je bila prebrana iz datoteke. Spremenljivka $line vsebuje vsebino trenutne vrstice.
  6. # Tukaj dodajte svojo logiko obdelave: To je komentar mesta, kjer lahko dodate svojo logiko za obdelavo vsake vrstice. Na primer, lahko analizirate vrstico, izvlečete informacije ali izvedete določena dejanja na podlagi vsebine.
  7. done <$file: To označuje konec zanke while. < $file preusmeri vsebino datoteke, ki jo prebere zanka.
  8. else: Če datoteka ne obstaja (pogoj v stavku if je napačen), skript izvede kodo pod vejo else.
  9. echo Datoteke ni bilo mogoče najti: $file: Ta vrstica natisne sporočilo o napaki, ki nakazuje, da navedena datoteka ni bila najdena.
  10. fi: Ta vrstica označuje konec stavka if.
bralna datoteka

bralna datoteka

Tukaj smo uporabili ` pwd ` ukaz za pridobitev poti trenutnega imenika.

17) V lupinskem skriptu napišite funkcijo, ki izračuna faktorial danega števila.

Tukaj je scenarij, kiizračunaj faktorijeldanega števila.

#!/bin/bash
# Definirajte funkcijo za izračun faktoriala
izračunaj_faktorial() {
num=1$
dejstvo=1
for ((i=1; i<=num; i++)); narediti
dejstvo=$((dejstvo * i))
Končano
echo $fact
}
# Pozove uporabnika, da vnese številko
echo Vnesite številko:
preberi input_num
# Pokličite funkcijo izračun faktorja z vneseno številko
faktorski_rezultat=$(izračunaj_faktorski $input_num)
# Prikaži faktorski rezultat
echo Faktorial $input_num je: $factorial_result

Pojasnilo:

  1. Skript se začne z vrstico shebang #!/bin/bash za podajanje tolmača.
  2. Calculate_factorial() je definiran kot funkcija. Potrebuje en argument, num, ki je število, za katerega je treba izračunati faktorial.
  3. Znotraj funkcije je dejstvo inicializirano na 1. Ta spremenljivka bo shranila faktorski rezultat.
  4. Zanka for ponavlja od 1 do danega števila (num). V vsaki ponovitvi pomnoži trenutno vrednost dejstva z indeksom zanke i.
  5. Ko je zanka končana, spremenljivka dejstva vsebuje izračunani faktorial.
  6. Skript uporabnika pozove, da vnese številko z read.
  7. Funkcija Calculate_factorial se pokliče s številko, ki jo poda uporabnik, rezultat pa se shrani v spremenljivko factorial_result.
  8. Nazadnje skript prikaže izračunani faktorski rezultat.
Faktorial

Faktoriel

18) Kako ravnate s signali, kot je Ctrl+C v lupinskem skriptu?

V lupinskem skriptu lahko z ukazom trap upravljate s signali, kot je Ctrl+C (znan tudi kot SIGINT). Ctrl+C ustvari signal SIGINT, ko ga uporabnik pritisne, da prekine izvajajoči se skript ali program. Z uporabo ukaza trap lahko določite dejanja, ki naj bodo izvedena, ko je prejet določen signal. Tako ravnate s signali, kot je Ctrl+C, v lupinskem skriptu:

#!/bin/bash
pospravi() {
echo Skript prekinjen. Izvajanje čiščenja …
# Tukaj dodajte svoja dejanja čiščenja
izhod 1
}
# Nastavite past za klic funkcije čiščenja, ko prejmete Ctrl+C (SIGINT).
čiščenje pasti SIGINT
# Preostanek vašega scenarija
echo Teče …
spati 10
odmev Končano.

Ravnanje s signali je pomembno za robustnost skriptov in zagotavljanje, da elegantno obravnavajo nepričakovane prekinitve. Funkcijo čiščenja lahko prilagodite svojim posebnim potrebam, na primer zapiranje datotek, zaustavitev procesov ali beleženje podatkov, preden se skript zapre.

Pojasnilo:

  1. #!/bin/bash: Ta vrstica shebang določa tolmača, ki bo uporabljen za izvajanje skripta.
  2. cleanup() { … }: To definira funkcijo z imenom cleanup. Znotraj te funkcije lahko vključite vsa dejanja, ki jih je treba izvesti, ko je skript prekinjen, na primer zapiranje datotek, sprostitev virov ali izvajanje drugih nalog čiščenja.
  3. trap cleanup SIGINT: Ukaz trap se uporablja za nastavitev upravljalnika signalov. V tem primeru določa, da se ob prejemu signala SIGINT (Ctrl+C) izvede funkcija čiščenja.
  4. echo Running…, sleep 10, echo Finished.: To so samo vzorčni ukazi za simulacijo izvajanja skripta.

446

19) Ustvarite skript, ki preveri in odstrani podvojene vrstice v besedilni datoteki.

Tukaj je naš skript za linux, v katerem bomo odstranili podvojene vrstice iz besedilne datoteke.

#!/bin/bash
vhodna_datoteka=vhod.txt
izhodna_datoteka=izhod.txt
razvrsti $input_file | uniq> $output_file
echo Podvojene vrstice so bile uspešno odstranjene.

Pojasnilo:

  1. Skript se začne s shebangom (#!/bin/bash), kar pomeni, da je treba skript interpretirati z lupino Bash.
  2. Spremenljivka input_file je nastavljena na ime vhodne datoteke, ki vsebuje podvojene vrstice (to spremenite v svoje dejansko ime vhodne datoteke).
  3. Spremenljivka output_file je nastavljena na ime izhodne datoteke, kjer bodo odstranjeni dvojniki (to spremenite v želeno ime izhodne datoteke).
  4. Skript uporablja ukaz sort za razvrščanje vrstic v vhodni datoteki. Razvrščanje vrstic zagotavlja, da so podvojene vrstice združene skupaj.
  5. Razvrščene vrstice se nato prenesejo skozi ukaz uniq, ki odstrani zaporedne podvojene vrstice. Izhod tega procesa je preusmerjen v izhodno datoteko.
  6. Ko so dvojniki odstranjeni, skript natisne sporočilo o uspehu.
odstranjevanje podvojenih vrstic

odstranjevanje podvojenih vrstic

Tukaj uporabljamo ` mačka ` za prikaz besedila znotraj besedilne datoteke.

20) Napišite skripto, ki ustvari varno naključno geslo.

Tukaj je naš skript za ustvarjanje varnega naključnega gesla.

#!/bin/bash
# Funkcija za ustvarjanje naključnega gesla
generiraj_geslo() {
tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
}
# Pokličite funkcijo in shranite generirano geslo
geslo=$(generiraj_geslo)
echo Ustvarjeno geslo: $password

Opomba: Uporabnik lahko ustrezno spremeni dolžino gesla, tako da zamenja številko `12`.

Pojasnilo:

  1. Skript se začne s shebangom (#!/bin/bash), kar pomeni, da ga je treba interpretirati z lupino Bash.
  2. Funkcija generate_password je definirana za ustvarjanje naključnega gesla. Takole deluje:
    • tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
    • fold -w 12 razdeli filtrirane naključne podatke v vrstice s širino 12 znakov.
    • head -n 1 izbere prvo vrstico in nam dejansko poda naključno zaporedje znakov dolžine 12.
  3. Spremenljivki gesla je dodeljen rezultat klica funkcije generate_password.
  4. Na koncu se ustvarjeno geslo prikaže z odmevom.

448

21) Napišite lupinski skript, ki izračuna skupno velikost vseh datotek v imeniku.

Tukaj je lupinski skript za izračun skupne velikosti vseh datotek v imeniku.

#!/bin/bash
imenik=/pot/do/vašega/imenika
total_size=$(du -csh $directory | grep total | awk ‘{print $1}’)
echo Skupna velikost datotek v $directory: $total_size

Pojasnilo:

  1. Skript se začne z #!/bin/bash shebang, kar pomeni, da ga je treba interpretirati z lupino Bash.
  2. Spremenljivka imenika je nastavljena na pot imenika, za katerega želite izračunati skupno velikost datoteke. Zamenjajte /path/to/your/directory z dejansko potjo.
  3. Ukaz du se uporablja za oceno porabe prostora za datoteke. Uporabljene možnosti so:
    • -c: Ustvari skupno vsoto.
    • -s: Prikaži samo skupno velikost navedenega imenika.
    • -h: Velikosti tiskanja v človeku berljivem formatu (npr. KB, MB, GB).
  4. Izhod du je posredovan grep total, da filtrira vrstico, ki vsebuje skupno velikost.
  5. awk '{print $1}' se uporablja za ekstrahiranje prvega polja (skupne velikosti) iz vrstice.
  6. Izračunana skupna velikost je shranjena v spremenljivki total_size.
  7. Na koncu skript prikaže skupno velikost z odmevom.
Skupna velikost datotek

Skupna velikost datotek

Tukaj smo uporabili ` pwd ` za ogled trenutne poti imenika.

22) Pojasnite razliko med stavkoma if in elif v skriptni lupini.

Funkcija `if`Staiftement Izjava `elif`
Namen Pojasnite razliko med stavkoma if in elif v skriptni lupini. Zagotavlja alternativne pogoje za preverjanje, kdaj je začetni pogoj if napačen.
uporaba Uporablja se za začetno stanje. Uporablja se za začetnim pogojem if za preverjanje dodatnih pogojev.
število blokov Lahko ima samo en blok if. Lahko ima več blokov elif, vendar samo en blok else (neobvezno).
Izvedba Izvede blok kode, povezan s stavkom if, če je pogoj resničen. Če je pogoj napačen, se izvede blok else (če je prisoten) (izbirno). Preveri vsak pogoj elif po vrstnem redu. Če je en pogoj elif resničen, se izvede ustrezen blok kode in skript zapusti celoten pogojni blok. Če nobeden od pogojev elif ni resničen, se izvede blok else (če je prisoten).
Ugnezdene strukture Lahko se ugnezdi znotraj drugih blokov if, elif ali else. Ni ga mogoče ugnezditi znotraj drugega bloka elif, lahko pa ga uporabite znotraj bloka if ali else.

Razumejmo to s primerom.

#!/bin/bash
število=5
če [$število -gt 10]; potem
echo $število je večje od 10
drugače
echo $število ni večje od 10
biti
odmev ——–
če [$število -gt 10]; potem
echo $število je večje od 10
elif [$število -eq 10]; potem
echo $število je enako 10
drugače
echo $število je manjše od 10
biti

Pojasnilo:

V tem primeru prvi blok if preveri, ali je število večje od 10. Če ni, natisne sporočilo, ki kaže, da število ni večje od 10. Drugi blok s stavki elif zaporedoma preverja več pogojev, dokler eden od njih ni resničen. V tem primeru, ker je vrednost števila 5, bo rezultat:

razlika if_elif

razlika if_elif

23) Kako uporabljate zanko while za ponavljajoče se izvajanje ukazov?

Zanka while se uporablja v skriptni lupini za ponavljajoče se izvajanje niza ukazov, dokler je podani pogoj resničen. Zanka nadaljuje z izvajanjem ukazov, dokler pogoj ne postane false.

Tukaj je osnovna sintaksa zanke while:

medtem ko [pogoj]; narediti
# Ukazi za izvedbo
Končano

Pojasnilo:

  1. Zanka `while` se začne s ključno besedo `while`, ki ji sledi pogoj v oglatih oklepajih `[ ]`.
  2. Telo zanke, ki vsebuje ukaze, ki jih je treba izvesti, je zaprto med ključnima besedama `do` in `done`.
  3. Zanka najprej preveri stanje. Če je pogoj resničen, se izvedejo ukazi v telesu zanke. Ko se telo zanke izvede, se pogoj znova preveri in postopek se ponavlja, dokler pogoj ne postane napačen.

primer: Če želimo natisniti številke od 1 do 5

#!/bin/bash
števec=1
medtem ko [ $counter -le 5 ]; narediti
echo Številka: $števec
števec=$((števec + 1))
Končano

Pojasnilo:

  • Spremenljivka števca je nastavljena na 1.
  • Zanka while preveri, ali je vrednost števca manjša ali enaka 5. Dokler je ta pogoj resničen, se zanka nadaljuje z izvajanjem.
  • Znotraj zanke se trenutna vrednost števca natisne z odmevom.
  • Števec se poveča za 1 z uporabo izraza $((števec + 1)).
medtem ko zanka

medtem ko zanka

24) Ustvarite lupinski skript, ki najde in izpiše vse prazne datoteke v imeniku.

Skript lupine, ki ga lahko uporabite za iskanje in seznam vseh praznih datotek v imeniku z uporabo ukazov `find` in `stat`:

#!/bin/bash
imenik=$1″
if [ -z $imenik ]; potem
echo Uporaba: $0
izhod 1
biti

če [! -d $imenik]; potem
echo Napaka: '$directory' ni veljaven imenik.
izhod 1
biti
echo Prazne datoteke v $directory:
najdi $imenik -tip f -prazen

Pojasnilo:

  1. ` #!/bin/bash `: To se imenuje shebang in operacijskemu sistemu pove, naj uporabi lupino Bash za interpretacijo in izvedbo skripta.
  2. ` imenik=$1″ `: Ta vrstica dodeli prvi argument ukazne vrstice (označen z $1) spremenljivki ` imenik `.
  3. ` if [ -z $imenik ]; potem `: Ta vrstica začne stavek if, ki preveri, ali je ` imenik ` spremenljivka je prazna (-z preveri prazen niz).
  4. ` echo Uporaba: $0 `: Če je imenik prazen, ta vrstica natisne sporočilo o uporabi, kjer je ` 0 $ ` predstavlja ime skripta.
  5. ` izhod 1 `: Ta vrstica zapusti skript z izhodno kodo ` 1 `, ki označuje napako.
  6. ` biti `: Ta vrstica označuje konec ` če ` izjava.
  7. ` če [! -d $imenik]; potem `: To zažene drug stavek if za preverjanje, ali navedeni imenik obstaja (` -d ` preizkusi za imenik).
  8. ` echo Napaka: '$directory' ni veljaven imenik. `: Če navedeni imenik ne obstaja, ta vrstica natisne sporočilo o napaki.
  9. ` izhod 1 `: Zapre skript z izhodno kodo ` 1 `.
  10. ` biti `: Označuje konec drugega ` če` izjava.
  11. ` echo Prazne datoteke v $directory: `: Če je do zdaj vse veljavno, ta vrstica natisne sporočilo, ki nakazuje, da bo skript prikazal prazne datoteke v navedenem imeniku.
  12. ` najdi $imenik -tip f -prazen `: Ta vrstica uporablja ` najti ` ukaz za iskanje praznih datotek (` -prazno `) vrste običajnih datotek (` - tip f `) v podanem imeniku. Nato navede te prazne datoteke.
Iskanje praznih datotek

Iskanje praznih datotek

Opomba : Pri zagonu skripta moramo zagotoviti imenik kot argument. Tukaj smo uporabili pot trenutnega imenika home/jayeshkumar/

25) Kakšen je namen ukaza read v skriptni lupini?

Ukaz za branje v skriptni lupini omogoča, da vas skript vpraša za informacije. To je tako, kot če bi vam računalnik zastavil vprašanje in čakal na vaš odgovor. To je uporabno za skripte, ki zahtevajo, da nekaj vtipkate, ali ko mora skript delati z informacijami iz datotek. Ukaz za branje pomaga skriptu, da se ustavi in ​​počaka na tisto, kar vtipkate, nato pa lahko te podatke uporabi za več stvari v skriptu.

Sintaksa ukaza za branje:

read variable_name>

Primer : Če želimo vzeti ime kot vnos od uporabnika, da ga natisnemo.

#!/bin/bash
echo Prosimo, vnesite svoje ime:
preberi ime
echo Pozdravljeni, $name!

453

preberi nam

Če povzamemo, ukaz za branje se uporablja za zajemanje uporabniškega vnosa ali podatkov iz datotek znotraj lupinskih skriptov, zaradi česar so skripti bolj interaktivni in vsestranski.

26) Napišite lupinski skript, ki pretvori vsa imena datotek v imeniku v male črke.

Tukaj je lupinski skript, ki pretvori vsa imena datotek v imeniku v male črke.

#!/bin/bash
imenik=$1″
if [ -z $imenik ]; potem
echo Uporaba: $0
izhod 1
biti

če [! -d $imenik]; potem

echo Napaka: '$directory' ni veljaven imenik.
izhod 1
biti

cd $imenik || izhod 1

za datoteko v *; narediti
if [ -f $file ]; potem
novo ime=$(echo $file | tr 'A-Z' 'a-z')
[ $file != $newname ] && mv $file $newname
biti
Končano

Pojasnilo:

  1. #!/bin/bash : To je shebang, ki določa, da je treba skript interpretirati z lupino Bash.
  2. imenik=$1″ : Ta vrstica dodeli prvi argument ukazne vrstice imeniku spremenljivk.
  3. if [ -z $imenik ]; potem : Ta vrstica preveri, ali je spremenljivka imenika prazna (pri izvajanju skripta ni podanega argumenta).
  4. echo Uporaba: $0 : Če je imenik prazen, ta vrstica natisne sporočilo o uporabi z imenom skripta ($0).
  5. izhod 1 : Ta vrstica zapusti skript z izhodno kodo 1, kar pomeni, da je prišlo do napake.
  6. f i: To označuje konec prvega stavka if.
  7. če [! -d $imenik]; potem : Ta vrstica preveri, ali navedeni imenik ne obstaja (-d preizkusi imenik).
  8. echo Napaka: '$directory' ni veljaven imenik. : Če navedeni imenik ne obstaja, ta vrstica natisne sporočilo o napaki.
  9. izhod 1 : zapusti skript z izhodno kodo 1.
  10. biti : Označi konec drugega stavka if.
  11. cd $imenik || izhod 1 : spremeni trenutni delovni imenik v podani imenik. Če sprememba imenika ne uspe (npr. imenik ne obstaja), se skript zapre s kodo napake.
  12. za datoteko v *; narediti: jaz za datoteko v *; narediti: začne zanko, ki ponovi vse elemente v trenutnem imeniku (* se ujema z vsemi imeni datotek).
  13. if [ -f $file ]; potem : preveri, ali je trenutni element ponovitve zanke navadna datoteka (-f preizkusi navadno datoteko).
  14. novo ime=$(echo $file | tr 'A-Z' 'a-z') : Pretvori trenutno ime datoteke ($file) v male črke z uporabo ukaza tr in shrani rezultat v spremenljivko newname.
  15. [ $file != $newname ] && mv $file $newname : primerja izvirno ime datoteke z novim imenom datoteke z malimi črkami. Če sta drugačna, datoteko preimenuje z ukazom mv.
  16. biti : Označuje konec notranjega stavka if.
  17. Končano : Označuje konec zanke.

454

Opomba : Pri zagonu skripta moramo zagotoviti imenik kot argument. Tukaj smo uporabili pot trenutnega imenika home/jayeshkumar/test

27) Kako lahko uporabite aritmetične operacije znotraj lupinskega skripta?

Aritmetične operacije je mogoče izvajati znotraj lupinskega skripta z uporabo različnih vgrajenih metod. Lupina ponuja mehanizme za preproste aritmetične izračune z uporabo aritmetične razširitve, kot je:

  1. Aritmetična razširitev ($((…)))
  2. Uporaba ukaza expr
  3. Uporaba ukaza let

Tukaj je naš skript lupine, ki razlaga vse tri metode za aritmetične operacije.

#!/bin/bash
num1=10
num2=5

#Aritmetična razširitev ($((…)))

rezultat=$((num1 + num2))
echo Vsota: $rezultat

#Uporaba ukaza expr

vsota=$(izraz $num1 + $num2)
echo Vsota: $vsota

#Uporaba ukaza let

naj bo vsota = num1 + num2
echo Vsota: $vsota

Pojasnilo:

  1. `#!/bin/bash` : To je shebang, ki določa, da je treba skript tolmačiti z lupino Bash.
  2. `num1=10` in ` num2=5` : Te vrstice dodelijo vrednosti 10 in 5 spremenljivkam ` št.1 ` in ` št.2 ` oziroma.
  3. `#Aritmetična razširitev ($((…)))` : To je komentar, ki označuje začetek odseka, ki prikazuje aritmetično razširitev.
  4. `rezultat=$((num1 + num2))` : Ta vrstica uporablja aritmetično razširitev za izračun vsote ` št.1 ` in ` št.2 ` in shrani rezultat v ` rezultat ` spremenljivka.
  5. `echo Sum: $rezultat` : Ta vrstica natisne izračunano vsoto z uporabo vrednosti, shranjene v ` rezultat ` spremenljivka.
  6. `#Uporaba ukaza expr` : To je komentar, ki označuje začetek razdelka, ki prikazuje uporabo znaka ` ekspr ` ukaz za aritmetične operacije.
  7. `vsota=$(izraz $num1 + $num2)` : Ta vrstica uporablja ` ekspr ` ukaz za izračun vsote ` št.1 ` in ` št.2 ` in shrani rezultat v ` vsota ` spremenljivka. Upoštevajte, da ` ekspr Ukaz ` zahteva presledke okoli operatorjev.
  8. `echo Sum: $sum` : Ta vrstica natisne izračunano vsoto z uporabo vrednosti, shranjene v ` vsota ` spremenljivka.
  9. `#Uporaba ukaza let` : To je komentar, ki označuje začetek razdelka, ki prikazuje uporabo znaka ` pustiti ` ukaz za aritmetične operacije.
  10. `naj vsota = num1 + num2″` : Ta vrstica uporablja ` pustiti ` ukaz za izračun vsote ` št.1 ` in ` št.2 ` in rezultat dodeli ` vsota ` spremenljivka. ` pustiti Ukaz ` ne zahteva presledkov okoli operatorjev.
  11. `echo Sum: $sum` : Ta vrstica natisne izračunano vsoto z uporabo vrednosti, shranjene v ` vsota ` spremenljivka.
aritmetika

aritmetika

28) Ustvarite skript, ki preveri, ali je omrežni gostitelj dosegljiv.

Tukaj je preprost lupinski skript, ki uporablja ukaz ping za preverjanje, ali je omrežni gostitelj dosegljiv:

#!/bin/bash
gostitelj=$1″
če [ -z $gostitelj ]; potem
echo Uporaba: $0
izhod 1
biti
ping -c 4 $gostitelj

če [ $? -eq 0]; potem
echo $host je dosegljiv.
drugače
echo $host ni dosegljiv.
biti

Pojasnilo:

  1. Kot argument vzame ime gostitelja ali naslov IP in preveri, ali je argument naveden.
  2. Če ni podanega nobenega argumenta, prikaže sporočilo o uporabi in se zapre.
  3. Uporablja ukaz ping z možnostjo -c 4 za pošiljanje štirih zahtev za odmev ICMP navedenemu gostitelju.
  4. Ko se zažene ukaz ping, preveri stanje izhoda ($?). Če je status izhoda 0, to pomeni, da je gostitelj dosegljiv in skript natisne sporočilo o uspehu. V nasprotnem primeru natisne sporočilo o napaki.

456

Opomba : Ime gostitelja moramo zagotoviti kot argument pri zagonu skripta. Tukaj smo uporabili google.com

29) Napišite lupinski skript za iskanje največjega elementa v nizu:

Tukaj je lupinski skript za iskanje največjega elementa v nizu.

#!/bin/bash
# Deklarirajte matriko
niz=(3 56 24 89 67)

# Inicializirajte spremenljivko za shranjevanje največje vrednosti, začenši s prvim elementom

max=${matrika[0]}

# Iteracija skozi matriko

za num v ${array[@]}; narediti

# Primerjajte vsak element s trenutnim maksimumom

if ((num> max)); potem
največ=$št
biti
Končano

# Natisnite največjo vrednost

echo Največji element v matriki je: $max

Pojasnilo:

  1. ` #!/bin/bash `: vrstica shebang določa, da je treba skript interpretirati z lupino Bash.
  2. ` niz=(3 56 24 89 67) `: Niz je deklariran in inicializiran z vrednostmi.
  3. ` max=${matrika[0]} `: `max` se inicializira s prvim elementom matrike.
  4. ` za num v ${array[@]}; narediti `: zanka `za` se uporablja za ponavljanje elementov matrike.
  5. ` if ((num> max)); potem `: Stavek `if` preveri, ali je trenutni element `num` večji od trenutnega največjega `max`.
  6. ` max=$num`: če`num ` je večji od `max`, `max` se posodobi z vrednostjo num.
  7. ` Končano `: Zanka `za` je zaprta.
  8. ` echo Največji element v matriki je: $max `: Končno skript natisne največjo vrednost, najdeno v matriki.
461

največje število

30) Napišite skripto za izračun vsote elementov v matriki.

#!/bin/bash

# Deklarirajte matriko

niz=(1 65 22 19 94)

# Inicializirajte spremenljivko za shranjevanje vsote

vsota=0

# Iterirajte skozi matriko in dodajte vsak element k vsoti

za num v ${array[@]}; narediti
am=$((am + am))
Končano

# Izpiši vsoto

echo Vsota elementov v matriki je: $sum

Pojasnilo:

` #!/bin/bash `: vrstica shebang določa, da je treba skript interpretirati z lupino Bash.

` niz=(1 65 22 19 94) `: Niz je deklariran in inicializiran z vrednostmi.

` vsota=0 `:` vsota ` se inicializira na nič, da zadrži vsoto elementov.

` za num v ${array[@]}; narediti `:A` za ` zanka se uporablja za ponavljanje elementov matrike.

` am=$((am + am)) `: Znotraj zanke, vsak element ` na enem ` je dodan v ` vsota ` spremenljivka.

` Končano `: ` za ` zanka je zaprta.

`echo Vsota elementov v matriki je: $sum`: Na koncu skript natisne vsoto vseh elementov v matriki.

462

Vsota elementov

Izvedite več o lupinskih skriptih

Zaključek

Vsi geeki vemo, da je lupinski skript zelo koristen za povečanje delovne produktivnosti in prihranek časa. Torej, v tem članku smo zajeli 30 zelo uporabnih in najbolj prevarantskih primerov lupinskih skriptov . Upamo, da vam bo ta popoln vodnik o primeru lupinskega skripta pomagal razumeti vse o lupinskih skriptih.




echo Prvi argument:
echo Drugi argument:

Če zaženemo skript z `.example.sh hello_1 hello_2`, bo izpisal:

argumenti cli

argumenti cli

11) Kako uporabljate zanko for za ponavljanje po seznamu vrednosti?

Ustvarite ime skripta `example.sh`.

#!/bin/bash

sadje=(jabolko banana češnjev datum)
za sadje v ${fruits[@]}; narediti
echo Trenutno sadje: $sadje
Končano

Pojasnilo:

vrste podatkov sql

Vrstica `fruits=` ustvari matriko z imenom sadje s štirimi elementi: jabolko, banana, češnja in datelj.

  • za sadje v ${fruits[@]}; do: Ta vrstica začne zanko for. Tukaj je, kaj vsak del pomeni:
  • za sadje: To deklarira spremenljivko zanke, imenovano sadje. V vsaki ponovitvi zanke bo fruit vseboval vrednost trenutnega elementa iz matrike fruits.
  • ${fruits[@]}: To je razširitev matrike, ki vzame vse elemente iz matrike fruits. Sintaksa ${…} zagotavlja, da se vsak element obravnava kot ločena postavka.
  • do: Ta ključna beseda označuje začetek telesa zanke.
  • echo Trenutni sad: $fruit: Znotraj zanke ta vrstica uporablja ukaz echo za prikaz trenutne vrednosti spremenljivke zanke fruit. Za vsako sadje v nizu natisne sporočilo, kot je trenutno sadje: jabolko.
  • done: Ta ključna beseda označuje konec telesa zanke. Skriptu sporoči, da se je zanka končala.
za zanko

za zanko

12) Napišite lupinski skript, ki izračuna vsoto celih števil od 1 do N z uporabo zanke.

Ustvarite ime skripta `example.sh`.

#!/bin/bash

echo Vnesite številko (N):
preberi N
vsota=0
for (( i=1; i<=$N; i++ )); narediti
vsota=$((vsota + i))
Končano
echo Vsota celih števil od 1 do $N je: $sum

Pojasnilo:
Skript se začne tako, da vas prosi, da vnesete številko (N) z read. Ta številka bo določila, kolikokrat se bo zanka zagnala.

  1. Spremenljivka sum je inicializirana na 0. Ta spremenljivka bo sledila vsoti celih števil.
  2. Zanka for se začne z for (( i=1; i<=$N; i++ )). Ta struktura zanke se uporablja za ponavljanje niza dejanj določeno število krat, v tem primeru od 1 do vrednosti N.
  3. Znotraj zanke se zgodijo te stvari:
    • i=1 nastavi spremenljivko zanke i na 1 na začetku vsake iteracije.
    • Pogoj zanke i<=$N preveri, ali je i še vedno manjši ali enak danemu številu N.
    • Če je pogoj resničen, se telo zanke izvede.
    • sum=$((sum + i)) izračuna novo vrednost vsote tako, da ji prišteje trenutno vrednost i. To sešteje cela števila od 1 do trenutne vrednosti i.
  4. Po vsaki ponovitvi i++ poveča vrednost i za 1.
  5. Zanka se nadaljuje, dokler pogoj i<=$N ne postane napačen (ko i postane večji od N).
  6. Ko je zanka končana, skript prikaže vsoto celih števil od 1 do vnesenega števila N.

439

13) Ustvarite skript, ki išče določeno besedo v datoteki in šteje njene pojavitve.

Ustvarite ime skripta `word_count.sh`

#!/bin/bash

echo Vnesite besedo za iskanje:
preberi ciljno_besedo
echo Vnesite ime datoteke:
preberi ime datoteke
count=$(grep -o -w $target_word $filename | wc -l)
echo Beseda '$target_word' se pojavi $count-krat v '$filename'.

Pojasnilo:

  • echo Vnesite besedo za iskanje:: Ta vrstica prikaže sporočilo, ki uporabnika prosi, da vnese besedo, ki jo želi iskati v datoteki.
  • read target_word: Ta vrstica prebere vnos uporabnika in ga shrani v spremenljivko z imenom target_word.
  • echo Vnesite ime datoteke:: Ta vrstica prikaže sporočilo, ki uporabnika prosi, da vnese ime datoteke, v kateri želi iskati.
  • preberi ime datoteke: Ta vrstica prebere vnos, ki ga zagotovi uporabnik, in ga shrani v spremenljivko z imenom ime datoteke.
  • count=$(grep -o -w $target_word $filename | wc -l): Ta vrstica opravlja glavno delo skripta. Razčlenimo ga še naprej:
    • grep -o -w $target_word $filename: Ta del ukaza išče pojavitve ciljne_besede v navedenem imenu datoteke. Možnosti -o in -w zagotavljata, da se štejejo samo celotne besede.
    • |: To je cev, ki sprejme izhod prejšnjega ukaza in ga pošlje kot vhod v naslednji ukaz.
    • wc -l: Ta del ukaza uporablja ukaz wc za štetje števila vrstic v vnosu. Možnost -l posebej šteje vrstice.
    • Celoten ukaz izračuna število pojavitev ciljne_besede v datoteki in to število dodeli spremenljivki coun

441

14) Pojasnite razlike med standardnim izhodom (stdout) in standardno napako (stderr).

Glavna razlika med standardnim izhodom (stdout) in standardno napako (stderr) je naslednja:

  • Standardni izhod (stdout): To je privzeti izhodni tok, kamor gre običajni izhod ukaza. Privzeto je prikazan na terminalu. Lahko ga preusmerite v datoteko z>.
  • Standardna napaka (stderr): To je izhodni tok za sporočila o napakah in opozorila. Privzeto je prikazan tudi na terminalu. Lahko ga preusmerite v datoteko z uporabo 2>.

15) Pojasnite koncept pogojnih stavkov v skriptni lupini.

Pogojni stavki v skriptni lupini omogočajo sprejemanje odločitev in nadzor nad potekom našega skripta na podlagi določenih pogojev. Našemu skriptu omogočajo izvajanje različnih nizov ukazov, odvisno od tega, ali je določen pogoj resničen ali napačen. Primarni pogojni stavki v skriptni lupini so stavek if, stavek elif (neobvezno) in stavek else (izbirno).

Tukaj je osnovna struktura pogojnega stavka v skriptni lupini:

če [ pogoj ]; potem
# Ukazi za izvedbo, če je pogoj resničen
elif [ drug_pogoj ]; potem
# Ukazi za izvedbo, če je other_condition resničen (neobvezno)
drugače
# Ukazi za izvedbo, če nobeden od pogojev ni resničen (neobvezno)
biti

Pojasnilo:

  • [pogoj] = Ukaz, ki ovrednoti pogoj in vrne resnično (0) ali napačno (ničelno) izhodno stanje.
  • then = To je ključna beseda, ki nakazuje, da bodo ukazi, ki ji sledijo, izvedeni, če je pogoj ocenjen kot resničen.
  • elif = (okrajšava za else if) To je razdelek, ki nam omogoča, da določimo dodatne pogoje za preverjanje.
  • else = to je razdelek, ki vsebuje ukaze, ki bodo izvedeni, če nobeden od pogojev ni resničen.
  • fi = To je ključna beseda, ki označuje konec pogojnega bloka.

16) Kako berete vrstice iz datoteke znotraj lupinskega skripta?

Za brati vrstice iz datoteke znotraj lupinskega skripta, lahko uporabimo različne metode, vendar je eden od pogostih pristopov uporaba zanke while v kombinaciji z ukazom read. Takole lahko to storimo:

#!/bin/bash
file=/home/jayeshkumar/jayesh.txt
# Preverite, ali datoteka obstaja
if [ -e $file ]; potem
medtem ko IFS= preberi -r vrstico; narediti
echo Branje vrstice: $line
# Tukaj dodajte svojo logiko obdelave
končano <$file
drugače
echo Datoteke ni mogoče najti: $file
biti

Pojasnilo:

  1. #!/bin/bash: To je shebang vrstica, ki določa tolmača (/bin/bash), ki bo uporabljen za izvajanje skripta.
  2. file=/home/jayeshkumar/jayesh.txt: Ta vrstica definira datoteko spremenljivke in dodeli celotno pot do datoteke jayesh.txt v imeniku /home/jayeshkumar. Spremenite to pot, da bo ustrezala dejanski poti datoteke, ki jo želite prebrati.
  3. if [ -e $file ]; potem: Ta vrstica začne stavek if. Preveri, ali datoteka, podana s spremenljivko $file, obstaja. Zastavica -e preverja obstoj datoteke.
  4. medtem ko IFS= preberi -r vrstico; do: Ta vrstica sproži zanko while, ki bere vrstice iz datoteke.
    • IFS=: IFS (notranje ločilo polj) je nastavljeno na prazno vrednost, da ohrani presledke na začetku in na koncu.
    • read -r line: To prebere trenutno vrstico iz datoteke in jo shrani v spremenljivo vrstico.
  5. echo Prebrana vrstica: $line: Ta vrstica natisne vsebino vrstice, ki je bila prebrana iz datoteke. Spremenljivka $line vsebuje vsebino trenutne vrstice.
  6. # Tukaj dodajte svojo logiko obdelave: To je komentar mesta, kjer lahko dodate svojo logiko za obdelavo vsake vrstice. Na primer, lahko analizirate vrstico, izvlečete informacije ali izvedete določena dejanja na podlagi vsebine.
  7. done <$file: To označuje konec zanke while. < $file preusmeri vsebino datoteke, ki jo prebere zanka.
  8. else: Če datoteka ne obstaja (pogoj v stavku if je napačen), skript izvede kodo pod vejo else.
  9. echo Datoteke ni bilo mogoče najti: $file: Ta vrstica natisne sporočilo o napaki, ki nakazuje, da navedena datoteka ni bila najdena.
  10. fi: Ta vrstica označuje konec stavka if.
bralna datoteka

bralna datoteka

Tukaj smo uporabili ` pwd ` ukaz za pridobitev poti trenutnega imenika.

17) V lupinskem skriptu napišite funkcijo, ki izračuna faktorial danega števila.

Tukaj je scenarij, kiizračunaj faktorijeldanega števila.

#!/bin/bash
# Definirajte funkcijo za izračun faktoriala
izračunaj_faktorial() {
num=1$
dejstvo=1
for ((i=1; i<=num; i++)); narediti
dejstvo=$((dejstvo * i))
Končano
echo $fact
}
# Pozove uporabnika, da vnese številko
echo Vnesite številko:
preberi input_num
# Pokličite funkcijo izračun faktorja z vneseno številko
faktorski_rezultat=$(izračunaj_faktorski $input_num)
# Prikaži faktorski rezultat
echo Faktorial $input_num je: $factorial_result

Pojasnilo:

  1. Skript se začne z vrstico shebang #!/bin/bash za podajanje tolmača.
  2. Calculate_factorial() je definiran kot funkcija. Potrebuje en argument, num, ki je število, za katerega je treba izračunati faktorial.
  3. Znotraj funkcije je dejstvo inicializirano na 1. Ta spremenljivka bo shranila faktorski rezultat.
  4. Zanka for ponavlja od 1 do danega števila (num). V vsaki ponovitvi pomnoži trenutno vrednost dejstva z indeksom zanke i.
  5. Ko je zanka končana, spremenljivka dejstva vsebuje izračunani faktorial.
  6. Skript uporabnika pozove, da vnese številko z read.
  7. Funkcija Calculate_factorial se pokliče s številko, ki jo poda uporabnik, rezultat pa se shrani v spremenljivko factorial_result.
  8. Nazadnje skript prikaže izračunani faktorski rezultat.
Faktorial

Faktoriel

18) Kako ravnate s signali, kot je Ctrl+C v lupinskem skriptu?

V lupinskem skriptu lahko z ukazom trap upravljate s signali, kot je Ctrl+C (znan tudi kot SIGINT). Ctrl+C ustvari signal SIGINT, ko ga uporabnik pritisne, da prekine izvajajoči se skript ali program. Z uporabo ukaza trap lahko določite dejanja, ki naj bodo izvedena, ko je prejet določen signal. Tako ravnate s signali, kot je Ctrl+C, v lupinskem skriptu:

#!/bin/bash
pospravi() {
echo Skript prekinjen. Izvajanje čiščenja …
# Tukaj dodajte svoja dejanja čiščenja
izhod 1
}
# Nastavite past za klic funkcije čiščenja, ko prejmete Ctrl+C (SIGINT).
čiščenje pasti SIGINT
# Preostanek vašega scenarija
echo Teče …
spati 10
odmev Končano.

Ravnanje s signali je pomembno za robustnost skriptov in zagotavljanje, da elegantno obravnavajo nepričakovane prekinitve. Funkcijo čiščenja lahko prilagodite svojim posebnim potrebam, na primer zapiranje datotek, zaustavitev procesov ali beleženje podatkov, preden se skript zapre.

Pojasnilo:

  1. #!/bin/bash: Ta vrstica shebang določa tolmača, ki bo uporabljen za izvajanje skripta.
  2. cleanup() { … }: To definira funkcijo z imenom cleanup. Znotraj te funkcije lahko vključite vsa dejanja, ki jih je treba izvesti, ko je skript prekinjen, na primer zapiranje datotek, sprostitev virov ali izvajanje drugih nalog čiščenja.
  3. trap cleanup SIGINT: Ukaz trap se uporablja za nastavitev upravljalnika signalov. V tem primeru določa, da se ob prejemu signala SIGINT (Ctrl+C) izvede funkcija čiščenja.
  4. echo Running…, sleep 10, echo Finished.: To so samo vzorčni ukazi za simulacijo izvajanja skripta.

446

19) Ustvarite skript, ki preveri in odstrani podvojene vrstice v besedilni datoteki.

Tukaj je naš skript za linux, v katerem bomo odstranili podvojene vrstice iz besedilne datoteke.

#!/bin/bash
vhodna_datoteka=vhod.txt
izhodna_datoteka=izhod.txt
razvrsti $input_file | uniq> $output_file
echo Podvojene vrstice so bile uspešno odstranjene.

Pojasnilo:

  1. Skript se začne s shebangom (#!/bin/bash), kar pomeni, da je treba skript interpretirati z lupino Bash.
  2. Spremenljivka input_file je nastavljena na ime vhodne datoteke, ki vsebuje podvojene vrstice (to spremenite v svoje dejansko ime vhodne datoteke).
  3. Spremenljivka output_file je nastavljena na ime izhodne datoteke, kjer bodo odstranjeni dvojniki (to spremenite v želeno ime izhodne datoteke).
  4. Skript uporablja ukaz sort za razvrščanje vrstic v vhodni datoteki. Razvrščanje vrstic zagotavlja, da so podvojene vrstice združene skupaj.
  5. Razvrščene vrstice se nato prenesejo skozi ukaz uniq, ki odstrani zaporedne podvojene vrstice. Izhod tega procesa je preusmerjen v izhodno datoteko.
  6. Ko so dvojniki odstranjeni, skript natisne sporočilo o uspehu.
odstranjevanje podvojenih vrstic

odstranjevanje podvojenih vrstic

Tukaj uporabljamo ` mačka ` za prikaz besedila znotraj besedilne datoteke.

20) Napišite skripto, ki ustvari varno naključno geslo.

Tukaj je naš skript za ustvarjanje varnega naključnega gesla.

#!/bin/bash
# Funkcija za ustvarjanje naključnega gesla
generiraj_geslo() {
tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
}
# Pokličite funkcijo in shranite generirano geslo
geslo=$(generiraj_geslo)
echo Ustvarjeno geslo: $password

Opomba: Uporabnik lahko ustrezno spremeni dolžino gesla, tako da zamenja številko `12`.

Pojasnilo:

  1. Skript se začne s shebangom (#!/bin/bash), kar pomeni, da ga je treba interpretirati z lupino Bash.
  2. Funkcija generate_password je definirana za ustvarjanje naključnega gesla. Takole deluje:
    • tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
    • fold -w 12 razdeli filtrirane naključne podatke v vrstice s širino 12 znakov.
    • head -n 1 izbere prvo vrstico in nam dejansko poda naključno zaporedje znakov dolžine 12.
  3. Spremenljivki gesla je dodeljen rezultat klica funkcije generate_password.
  4. Na koncu se ustvarjeno geslo prikaže z odmevom.

448

21) Napišite lupinski skript, ki izračuna skupno velikost vseh datotek v imeniku.

Tukaj je lupinski skript za izračun skupne velikosti vseh datotek v imeniku.

#!/bin/bash
imenik=/pot/do/vašega/imenika
total_size=$(du -csh $directory | grep total | awk ‘{print }’)
echo Skupna velikost datotek v $directory: $total_size

Pojasnilo:

  1. Skript se začne z #!/bin/bash shebang, kar pomeni, da ga je treba interpretirati z lupino Bash.
  2. Spremenljivka imenika je nastavljena na pot imenika, za katerega želite izračunati skupno velikost datoteke. Zamenjajte /path/to/your/directory z dejansko potjo.
  3. Ukaz du se uporablja za oceno porabe prostora za datoteke. Uporabljene možnosti so:
    • -c: Ustvari skupno vsoto.
    • -s: Prikaži samo skupno velikost navedenega imenika.
    • -h: Velikosti tiskanja v človeku berljivem formatu (npr. KB, MB, GB).
  4. Izhod du je posredovan grep total, da filtrira vrstico, ki vsebuje skupno velikost.
  5. awk '{print }' se uporablja za ekstrahiranje prvega polja (skupne velikosti) iz vrstice.
  6. Izračunana skupna velikost je shranjena v spremenljivki total_size.
  7. Na koncu skript prikaže skupno velikost z odmevom.
Skupna velikost datotek

Skupna velikost datotek

Tukaj smo uporabili ` pwd ` za ogled trenutne poti imenika.

22) Pojasnite razliko med stavkoma if in elif v skriptni lupini.

Funkcija `if`Staiftement Izjava `elif`
Namen Pojasnite razliko med stavkoma if in elif v skriptni lupini. Zagotavlja alternativne pogoje za preverjanje, kdaj je začetni pogoj if napačen.
uporaba Uporablja se za začetno stanje. Uporablja se za začetnim pogojem if za preverjanje dodatnih pogojev.
število blokov Lahko ima samo en blok if. Lahko ima več blokov elif, vendar samo en blok else (neobvezno).
Izvedba Izvede blok kode, povezan s stavkom if, če je pogoj resničen. Če je pogoj napačen, se izvede blok else (če je prisoten) (izbirno). Preveri vsak pogoj elif po vrstnem redu. Če je en pogoj elif resničen, se izvede ustrezen blok kode in skript zapusti celoten pogojni blok. Če nobeden od pogojev elif ni resničen, se izvede blok else (če je prisoten).
Ugnezdene strukture Lahko se ugnezdi znotraj drugih blokov if, elif ali else. Ni ga mogoče ugnezditi znotraj drugega bloka elif, lahko pa ga uporabite znotraj bloka if ali else.

Razumejmo to s primerom.

#!/bin/bash
število=5
če [$število -gt 10]; potem
echo $število je večje od 10
drugače
echo $število ni večje od 10
biti
odmev ——–
če [$število -gt 10]; potem
echo $število je večje od 10
elif [$število -eq 10]; potem
echo $število je enako 10
drugače
echo $število je manjše od 10
biti

Pojasnilo:

V tem primeru prvi blok if preveri, ali je število večje od 10. Če ni, natisne sporočilo, ki kaže, da število ni večje od 10. Drugi blok s stavki elif zaporedoma preverja več pogojev, dokler eden od njih ni resničen. V tem primeru, ker je vrednost števila 5, bo rezultat:

razlika if_elif

razlika if_elif

23) Kako uporabljate zanko while za ponavljajoče se izvajanje ukazov?

Zanka while se uporablja v skriptni lupini za ponavljajoče se izvajanje niza ukazov, dokler je podani pogoj resničen. Zanka nadaljuje z izvajanjem ukazov, dokler pogoj ne postane false.

Tukaj je osnovna sintaksa zanke while:

medtem ko [pogoj]; narediti
# Ukazi za izvedbo
Končano

Pojasnilo:

  1. Zanka `while` se začne s ključno besedo `while`, ki ji sledi pogoj v oglatih oklepajih `[ ]`.
  2. Telo zanke, ki vsebuje ukaze, ki jih je treba izvesti, je zaprto med ključnima besedama `do` in `done`.
  3. Zanka najprej preveri stanje. Če je pogoj resničen, se izvedejo ukazi v telesu zanke. Ko se telo zanke izvede, se pogoj znova preveri in postopek se ponavlja, dokler pogoj ne postane napačen.

primer: Če želimo natisniti številke od 1 do 5

#!/bin/bash
števec=1
medtem ko [ $counter -le 5 ]; narediti
echo Številka: $števec
števec=$((števec + 1))
Končano

Pojasnilo:

  • Spremenljivka števca je nastavljena na 1.
  • Zanka while preveri, ali je vrednost števca manjša ali enaka 5. Dokler je ta pogoj resničen, se zanka nadaljuje z izvajanjem.
  • Znotraj zanke se trenutna vrednost števca natisne z odmevom.
  • Števec se poveča za 1 z uporabo izraza $((števec + 1)).
medtem ko zanka

medtem ko zanka

24) Ustvarite lupinski skript, ki najde in izpiše vse prazne datoteke v imeniku.

Skript lupine, ki ga lahko uporabite za iskanje in seznam vseh praznih datotek v imeniku z uporabo ukazov `find` in `stat`:

#!/bin/bash
imenik=″
if [ -z $imenik ]; potem
echo Uporaba:

Za vse distribucije Linuxa je lupinski skript kot čarobna palica, ki avtomatizira proces, uporabnikom prihrani čas in poveča produktivnost. Ta vadnica za skriptiranje vas bo seznanila s 25 plus primeri skriptiranja.

Toda preden preidemo na temo lupinsko skriptiranje primeri, razumejmo lupinski skript in dejanske primere uporabe lupinskega skripta.

Kaj je Shell Script?

No, lupina je a CLI ( tolmač ukazne vrstice ), ki se izvaja v besedilnem oknu, kjer lahko uporabniki upravljajo in izvajajo ukaze lupine. Po drugi strani pa postopek pisanja nabora ukazov, ki se izvajajo v sistemu Linux. Datoteka, ki vključuje takšna navodila, se imenuje bash skript.

Uporaba lupinskih skriptov

Spodaj je nekaj pogostih uporab lupinskega skripta:

  • Avtomatizacija nalog – Uporablja se lahko za avtomatizacijo ponavljajočih se nalog, kot so običajne varnostne kopije in nameščanje programske opreme.
  • Prilagajanje – Uporabite lahko lupinske skripte za oblikovanje okolja ukazne vrstice in enostavno opravljanje svoje naloge glede na potrebe.
  • Upravljanje datotek – Lupinske skripte je mogoče uporabiti tudi za upravljanje in manipulacijo datotek in imenikov, kot so premikanje, kopiranje, preimenovanje ali brisanje datotek.

Primeri lupinskih skriptov v Linuxu

1) Kaj označuje znak (#!) na začetku lupinskega skripta?

The drevo (#!) na začetku skripta označuje tolmača, ki naj se uporabi za izvedbo skripta. Sistemu pove, katera lupina ali tolmač naj interpretira ukaze skripta.

Na primer: Recimo, da imamo skript z imenom myscript.sh napisano v lupini Bash:

shebang

shebang

V tem primeru:

  • #!/bin/bash na začetku skripta pomeni, da je treba skript interpretirati z lupino Bash.
  • Ukazi echo se uporabljajo za tiskanje sporočil na terminal.

2) Kako zaženete lupinski skript iz ukazne vrstice?

Če želite zagnati lupinski skript iz ukazne vrstice, moramo slediti tem korakom:

  • Prepričajte se, da ima skriptna datoteka dovoljenja za izvedljivo uporabo ukaz chmod :
chmod +x myscript.sh>
  • Izvedite skript z njegovim imenom datoteke:
./myscript.sh>

Tukaj morate zamenjati myscrtipt.sh z imenom vašega skripta.

3) Napišite lupinski skript, ki natisne techcodeview.com na terminal.

Ustvarite ime skripta `myscript.sh` (uporabljamo ` Ker ` urejevalnik, izberete lahko poljuben urejevalnik)

vim myscript.sh>

#!/bin/bash
# Ta skript natisne techcodeview.com na terminal
echo techcodeview.com

tiskano ime

tiskano ime

Naš skript naredimo izvršljiv z uporabo `chmod +x`, nato ga izvedemo z `./myscipt.sh` in dobimo želeni rezultat techcodeview.com.

4) Pojasnite namen ukaza echo v skriptni lupini.

The ukaz echo se uporablja za prikaz besedila ali spremenljivk na terminalu. Običajno se uporablja za tiskanje sporočil, vrednosti spremenljivk in generiranje izhodnih podatkov programa.

434

ukaz echo

V tem primeru smo izvedli `echo` na terminalu neposredno, saj deluje enako znotraj skripta lupine.

5) Kako lahko dodelite vrednost spremenljivki v lupinskem skriptu?

Spremenljivkam so dodeljene vrednosti z uporabo operatorja dodeljevanja =.

Na primer:

#!/bin/bash
# Dodeljevanje vrednosti spremenljivki
ime=Jayesh
starost=21
echo $name $age

Pojasnilo:

  • Spremenljivki imena je dodeljena vrednost Jayesh.
  • Spremenljivki starosti je pripisana vrednost 21.
  • echo se uporablja za tiskanje in `$name` `$age` se uporablja za klic vrednosti, shranjene v spremenljivkah.

435

6) Napišite lupinski skript, ki kot vhod sprejme uporabniško ime in ga pozdravi.

Ustvarite ime skripta `example.sh`.

#!/bin/bash
# Vprašajte uporabnika za njegovo ime
echo Kako ti je ime?
preberi ime
# Pozdravite uporabnika
echo Pozdravljeni, $name! Lepo te je bilo srečati.

Pojasnilo:

  • #!/bin/bash: To je shebang linija. Sistemu pove, naj za izvedbo skripta uporabi tolmač Bash.
  • # Vprašajte uporabnika za njegovo ime: To je komentar. Zagotavlja kontekst o prihajajoči kodi. Tolmač ignorira komentarje.
  • echo Kako ti je ime?: Ukaz echo se uporablja za prikaz besedila v dvojnih narekovajih na terminalu.
  • preberi ime: Ukaz za branje počaka, da uporabnik vnese besedilo, in ga shrani v ime spremenljivke.
  • echo Pozdravljeni, $name! Veseli me.: Ta vrstica uporablja ukaz echo za tiskanje pozdravnega sporočila, ki vključuje vrednost spremenljivke imena, ki je bila zbrana iz uporabnikovega vnosa.

436

7) Kako dodate komentarje lupinskemu skriptu?

Komentarji v skriptni lupini se uporabljajo za zagotavljanje razlag ali konteksta kode. Tolmač jih ignorira in so namenjene samo ljudem, ki berejo scenarij. Komentarje lahko dodate s simbolom #.

#!/bin/bash
# To je komentar, ki pojasnjuje namen skripta
odmev gfg

8) Ustvarite lupinski skript, ki preveri, ali datoteka obstaja v trenutnem imeniku.

Tukaj je skript, ki preveri, ali datoteka z imenom example.txt obstaja v trenutnem imeniku:

#!/bin/bash
datoteka=primer.txt
# Preverite, ali datoteka obstaja
if [ -e $file ]; potem
echo Datoteka obstaja: $file
drugače
echo Datoteke ni mogoče najti: $file
biti

Pojasnilo:

  1. #!/bin/bash: To je shebang vrstica, ki določa tolmača (/bin/bash), ki bo uporabljen za izvajanje skripta.
  2. file=example.txt: Ta vrstica definira datoteko spremenljivke in ji dodeli vrednost example.txt. To lahko zamenjate z imenom datoteke, ki jo želite preveriti.
  3. if [ -e $file ]; potem: Ta vrstica začne stavek if. Pogoj [ -e $datoteka ] preveri, ali datoteka, določena z vrednostjo spremenljivke datoteke, obstaja. Zastavica -e se uporablja za preverjanje obstoja datoteke.
  4. echo Datoteka obstaja: $file: Če je pogoj resničen (tj. datoteka obstaja), ta vrstica natisne sporočilo, ki označuje, da datoteka obstaja, skupaj z imenom datoteke.
  5. else: Če je pogoj napačen (tj. datoteka ne obstaja), skript izvede kodo pod vejo else.
  6. echo Datoteke ni bilo mogoče najti: $file: Ta vrstica natisne sporočilo o napaki, ki označuje, da navedena datoteka ni bila najdena, skupaj z imenom datoteke.
  7. fi: Ta vrstica označuje konec stavka if.
Iskanje datoteke

Iskanje datoteke

9) Kakšna je razlika med enojnimi narekovaji (‘) in dvojnimi narekovaji () v skriptni lupini?

Enojni narekovaji (‘) in dvojni narekovaji () se uporabljajo za zapiranje nizov v skriptno lupino, vendar se obnašajo različno:

  • Enojni narekovaji: vse med enojnimi narekovaji se obravnava kot dobesedni niz. Imena spremenljivk in večina posebnih znakov niso razširjeni.
  • Dvojni narekovaji: Spremenljivke in določeni posebni znaki v dvojnih narekovajih so razširjeni. Vsebina je predmet zamenjave spremenljivke in zamenjave ukaza.

#!/bin/bash

abcd=Pozdravljeni
echo '$abcd' # Izhod: $abcd
echo $abcd # Izhod: Pozdravljeni

10) Kako lahko uporabite argumente ukazne vrstice v lupinskem skriptu?

Argumenti ukazne vrstice so vrednosti, ki se zagotovijo skriptu, ko se ta izvede. Do njih je mogoče dostopati znotraj skripta z uporabo posebnih spremenljivk, kot so $1, $2 itd., kjer $1 predstavlja prvi argument, $2 predstavlja drugi argument itd.

Na primer: Če ime našega skripta v `example.sh`

#!/bin/bash

echo Ime skripta: $0
echo Prvi argument: $1
echo Drugi argument: $2

Če zaženemo skript z `.example.sh hello_1 hello_2`, bo izpisal:

argumenti cli

argumenti cli

11) Kako uporabljate zanko for za ponavljanje po seznamu vrednosti?

Ustvarite ime skripta `example.sh`.

#!/bin/bash

sadje=(jabolko banana češnjev datum)
za sadje v ${fruits[@]}; narediti
echo Trenutno sadje: $sadje
Končano

Pojasnilo:

Vrstica `fruits=` ustvari matriko z imenom sadje s štirimi elementi: jabolko, banana, češnja in datelj.

  • za sadje v ${fruits[@]}; do: Ta vrstica začne zanko for. Tukaj je, kaj vsak del pomeni:
  • za sadje: To deklarira spremenljivko zanke, imenovano sadje. V vsaki ponovitvi zanke bo fruit vseboval vrednost trenutnega elementa iz matrike fruits.
  • ${fruits[@]}: To je razširitev matrike, ki vzame vse elemente iz matrike fruits. Sintaksa ${…} zagotavlja, da se vsak element obravnava kot ločena postavka.
  • do: Ta ključna beseda označuje začetek telesa zanke.
  • echo Trenutni sad: $fruit: Znotraj zanke ta vrstica uporablja ukaz echo za prikaz trenutne vrednosti spremenljivke zanke fruit. Za vsako sadje v nizu natisne sporočilo, kot je trenutno sadje: jabolko.
  • done: Ta ključna beseda označuje konec telesa zanke. Skriptu sporoči, da se je zanka končala.
za zanko

za zanko

12) Napišite lupinski skript, ki izračuna vsoto celih števil od 1 do N z uporabo zanke.

Ustvarite ime skripta `example.sh`.

#!/bin/bash

echo Vnesite številko (N):
preberi N
vsota=0
for (( i=1; i<=$N; i++ )); narediti
vsota=$((vsota + i))
Končano
echo Vsota celih števil od 1 do $N je: $sum

Pojasnilo:
Skript se začne tako, da vas prosi, da vnesete številko (N) z read. Ta številka bo določila, kolikokrat se bo zanka zagnala.

  1. Spremenljivka sum je inicializirana na 0. Ta spremenljivka bo sledila vsoti celih števil.
  2. Zanka for se začne z for (( i=1; i<=$N; i++ )). Ta struktura zanke se uporablja za ponavljanje niza dejanj določeno število krat, v tem primeru od 1 do vrednosti N.
  3. Znotraj zanke se zgodijo te stvari:
    • i=1 nastavi spremenljivko zanke i na 1 na začetku vsake iteracije.
    • Pogoj zanke i<=$N preveri, ali je i še vedno manjši ali enak danemu številu N.
    • Če je pogoj resničen, se telo zanke izvede.
    • sum=$((sum + i)) izračuna novo vrednost vsote tako, da ji prišteje trenutno vrednost i. To sešteje cela števila od 1 do trenutne vrednosti i.
  4. Po vsaki ponovitvi i++ poveča vrednost i za 1.
  5. Zanka se nadaljuje, dokler pogoj i<=$N ne postane napačen (ko i postane večji od N).
  6. Ko je zanka končana, skript prikaže vsoto celih števil od 1 do vnesenega števila N.

439

13) Ustvarite skript, ki išče določeno besedo v datoteki in šteje njene pojavitve.

Ustvarite ime skripta `word_count.sh`

#!/bin/bash

echo Vnesite besedo za iskanje:
preberi ciljno_besedo
echo Vnesite ime datoteke:
preberi ime datoteke
count=$(grep -o -w $target_word $filename | wc -l)
echo Beseda '$target_word' se pojavi $count-krat v '$filename'.

Pojasnilo:

  • echo Vnesite besedo za iskanje:: Ta vrstica prikaže sporočilo, ki uporabnika prosi, da vnese besedo, ki jo želi iskati v datoteki.
  • read target_word: Ta vrstica prebere vnos uporabnika in ga shrani v spremenljivko z imenom target_word.
  • echo Vnesite ime datoteke:: Ta vrstica prikaže sporočilo, ki uporabnika prosi, da vnese ime datoteke, v kateri želi iskati.
  • preberi ime datoteke: Ta vrstica prebere vnos, ki ga zagotovi uporabnik, in ga shrani v spremenljivko z imenom ime datoteke.
  • count=$(grep -o -w $target_word $filename | wc -l): Ta vrstica opravlja glavno delo skripta. Razčlenimo ga še naprej:
    • grep -o -w $target_word $filename: Ta del ukaza išče pojavitve ciljne_besede v navedenem imenu datoteke. Možnosti -o in -w zagotavljata, da se štejejo samo celotne besede.
    • |: To je cev, ki sprejme izhod prejšnjega ukaza in ga pošlje kot vhod v naslednji ukaz.
    • wc -l: Ta del ukaza uporablja ukaz wc za štetje števila vrstic v vnosu. Možnost -l posebej šteje vrstice.
    • Celoten ukaz izračuna število pojavitev ciljne_besede v datoteki in to število dodeli spremenljivki coun

441

14) Pojasnite razlike med standardnim izhodom (stdout) in standardno napako (stderr).

Glavna razlika med standardnim izhodom (stdout) in standardno napako (stderr) je naslednja:

  • Standardni izhod (stdout): To je privzeti izhodni tok, kamor gre običajni izhod ukaza. Privzeto je prikazan na terminalu. Lahko ga preusmerite v datoteko z>.
  • Standardna napaka (stderr): To je izhodni tok za sporočila o napakah in opozorila. Privzeto je prikazan tudi na terminalu. Lahko ga preusmerite v datoteko z uporabo 2>.

15) Pojasnite koncept pogojnih stavkov v skriptni lupini.

Pogojni stavki v skriptni lupini omogočajo sprejemanje odločitev in nadzor nad potekom našega skripta na podlagi določenih pogojev. Našemu skriptu omogočajo izvajanje različnih nizov ukazov, odvisno od tega, ali je določen pogoj resničen ali napačen. Primarni pogojni stavki v skriptni lupini so stavek if, stavek elif (neobvezno) in stavek else (izbirno).

Tukaj je osnovna struktura pogojnega stavka v skriptni lupini:

če [ pogoj ]; potem
# Ukazi za izvedbo, če je pogoj resničen
elif [ drug_pogoj ]; potem
# Ukazi za izvedbo, če je other_condition resničen (neobvezno)
drugače
# Ukazi za izvedbo, če nobeden od pogojev ni resničen (neobvezno)
biti

Pojasnilo:

  • [pogoj] = Ukaz, ki ovrednoti pogoj in vrne resnično (0) ali napačno (ničelno) izhodno stanje.
  • then = To je ključna beseda, ki nakazuje, da bodo ukazi, ki ji sledijo, izvedeni, če je pogoj ocenjen kot resničen.
  • elif = (okrajšava za else if) To je razdelek, ki nam omogoča, da določimo dodatne pogoje za preverjanje.
  • else = to je razdelek, ki vsebuje ukaze, ki bodo izvedeni, če nobeden od pogojev ni resničen.
  • fi = To je ključna beseda, ki označuje konec pogojnega bloka.

16) Kako berete vrstice iz datoteke znotraj lupinskega skripta?

Za brati vrstice iz datoteke znotraj lupinskega skripta, lahko uporabimo različne metode, vendar je eden od pogostih pristopov uporaba zanke while v kombinaciji z ukazom read. Takole lahko to storimo:

#!/bin/bash
file=/home/jayeshkumar/jayesh.txt
# Preverite, ali datoteka obstaja
if [ -e $file ]; potem
medtem ko IFS= preberi -r vrstico; narediti
echo Branje vrstice: $line
# Tukaj dodajte svojo logiko obdelave
končano <$file
drugače
echo Datoteke ni mogoče najti: $file
biti

Pojasnilo:

  1. #!/bin/bash: To je shebang vrstica, ki določa tolmača (/bin/bash), ki bo uporabljen za izvajanje skripta.
  2. file=/home/jayeshkumar/jayesh.txt: Ta vrstica definira datoteko spremenljivke in dodeli celotno pot do datoteke jayesh.txt v imeniku /home/jayeshkumar. Spremenite to pot, da bo ustrezala dejanski poti datoteke, ki jo želite prebrati.
  3. if [ -e $file ]; potem: Ta vrstica začne stavek if. Preveri, ali datoteka, podana s spremenljivko $file, obstaja. Zastavica -e preverja obstoj datoteke.
  4. medtem ko IFS= preberi -r vrstico; do: Ta vrstica sproži zanko while, ki bere vrstice iz datoteke.
    • IFS=: IFS (notranje ločilo polj) je nastavljeno na prazno vrednost, da ohrani presledke na začetku in na koncu.
    • read -r line: To prebere trenutno vrstico iz datoteke in jo shrani v spremenljivo vrstico.
  5. echo Prebrana vrstica: $line: Ta vrstica natisne vsebino vrstice, ki je bila prebrana iz datoteke. Spremenljivka $line vsebuje vsebino trenutne vrstice.
  6. # Tukaj dodajte svojo logiko obdelave: To je komentar mesta, kjer lahko dodate svojo logiko za obdelavo vsake vrstice. Na primer, lahko analizirate vrstico, izvlečete informacije ali izvedete določena dejanja na podlagi vsebine.
  7. done <$file: To označuje konec zanke while. < $file preusmeri vsebino datoteke, ki jo prebere zanka.
  8. else: Če datoteka ne obstaja (pogoj v stavku if je napačen), skript izvede kodo pod vejo else.
  9. echo Datoteke ni bilo mogoče najti: $file: Ta vrstica natisne sporočilo o napaki, ki nakazuje, da navedena datoteka ni bila najdena.
  10. fi: Ta vrstica označuje konec stavka if.
bralna datoteka

bralna datoteka

Tukaj smo uporabili ` pwd ` ukaz za pridobitev poti trenutnega imenika.

17) V lupinskem skriptu napišite funkcijo, ki izračuna faktorial danega števila.

Tukaj je scenarij, kiizračunaj faktorijeldanega števila.

#!/bin/bash
# Definirajte funkcijo za izračun faktoriala
izračunaj_faktorial() {
num=1$
dejstvo=1
for ((i=1; i<=num; i++)); narediti
dejstvo=$((dejstvo * i))
Končano
echo $fact
}
# Pozove uporabnika, da vnese številko
echo Vnesite številko:
preberi input_num
# Pokličite funkcijo izračun faktorja z vneseno številko
faktorski_rezultat=$(izračunaj_faktorski $input_num)
# Prikaži faktorski rezultat
echo Faktorial $input_num je: $factorial_result

Pojasnilo:

  1. Skript se začne z vrstico shebang #!/bin/bash za podajanje tolmača.
  2. Calculate_factorial() je definiran kot funkcija. Potrebuje en argument, num, ki je število, za katerega je treba izračunati faktorial.
  3. Znotraj funkcije je dejstvo inicializirano na 1. Ta spremenljivka bo shranila faktorski rezultat.
  4. Zanka for ponavlja od 1 do danega števila (num). V vsaki ponovitvi pomnoži trenutno vrednost dejstva z indeksom zanke i.
  5. Ko je zanka končana, spremenljivka dejstva vsebuje izračunani faktorial.
  6. Skript uporabnika pozove, da vnese številko z read.
  7. Funkcija Calculate_factorial se pokliče s številko, ki jo poda uporabnik, rezultat pa se shrani v spremenljivko factorial_result.
  8. Nazadnje skript prikaže izračunani faktorski rezultat.
Faktorial

Faktoriel

18) Kako ravnate s signali, kot je Ctrl+C v lupinskem skriptu?

V lupinskem skriptu lahko z ukazom trap upravljate s signali, kot je Ctrl+C (znan tudi kot SIGINT). Ctrl+C ustvari signal SIGINT, ko ga uporabnik pritisne, da prekine izvajajoči se skript ali program. Z uporabo ukaza trap lahko določite dejanja, ki naj bodo izvedena, ko je prejet določen signal. Tako ravnate s signali, kot je Ctrl+C, v lupinskem skriptu:

#!/bin/bash
pospravi() {
echo Skript prekinjen. Izvajanje čiščenja …
# Tukaj dodajte svoja dejanja čiščenja
izhod 1
}
# Nastavite past za klic funkcije čiščenja, ko prejmete Ctrl+C (SIGINT).
čiščenje pasti SIGINT
# Preostanek vašega scenarija
echo Teče …
spati 10
odmev Končano.

Ravnanje s signali je pomembno za robustnost skriptov in zagotavljanje, da elegantno obravnavajo nepričakovane prekinitve. Funkcijo čiščenja lahko prilagodite svojim posebnim potrebam, na primer zapiranje datotek, zaustavitev procesov ali beleženje podatkov, preden se skript zapre.

Pojasnilo:

  1. #!/bin/bash: Ta vrstica shebang določa tolmača, ki bo uporabljen za izvajanje skripta.
  2. cleanup() { … }: To definira funkcijo z imenom cleanup. Znotraj te funkcije lahko vključite vsa dejanja, ki jih je treba izvesti, ko je skript prekinjen, na primer zapiranje datotek, sprostitev virov ali izvajanje drugih nalog čiščenja.
  3. trap cleanup SIGINT: Ukaz trap se uporablja za nastavitev upravljalnika signalov. V tem primeru določa, da se ob prejemu signala SIGINT (Ctrl+C) izvede funkcija čiščenja.
  4. echo Running…, sleep 10, echo Finished.: To so samo vzorčni ukazi za simulacijo izvajanja skripta.

446

19) Ustvarite skript, ki preveri in odstrani podvojene vrstice v besedilni datoteki.

Tukaj je naš skript za linux, v katerem bomo odstranili podvojene vrstice iz besedilne datoteke.

#!/bin/bash
vhodna_datoteka=vhod.txt
izhodna_datoteka=izhod.txt
razvrsti $input_file | uniq> $output_file
echo Podvojene vrstice so bile uspešno odstranjene.

Pojasnilo:

  1. Skript se začne s shebangom (#!/bin/bash), kar pomeni, da je treba skript interpretirati z lupino Bash.
  2. Spremenljivka input_file je nastavljena na ime vhodne datoteke, ki vsebuje podvojene vrstice (to spremenite v svoje dejansko ime vhodne datoteke).
  3. Spremenljivka output_file je nastavljena na ime izhodne datoteke, kjer bodo odstranjeni dvojniki (to spremenite v želeno ime izhodne datoteke).
  4. Skript uporablja ukaz sort za razvrščanje vrstic v vhodni datoteki. Razvrščanje vrstic zagotavlja, da so podvojene vrstice združene skupaj.
  5. Razvrščene vrstice se nato prenesejo skozi ukaz uniq, ki odstrani zaporedne podvojene vrstice. Izhod tega procesa je preusmerjen v izhodno datoteko.
  6. Ko so dvojniki odstranjeni, skript natisne sporočilo o uspehu.
odstranjevanje podvojenih vrstic

odstranjevanje podvojenih vrstic

Tukaj uporabljamo ` mačka ` za prikaz besedila znotraj besedilne datoteke.

20) Napišite skripto, ki ustvari varno naključno geslo.

Tukaj je naš skript za ustvarjanje varnega naključnega gesla.

#!/bin/bash
# Funkcija za ustvarjanje naključnega gesla
generiraj_geslo() {
tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
}
# Pokličite funkcijo in shranite generirano geslo
geslo=$(generiraj_geslo)
echo Ustvarjeno geslo: $password

Opomba: Uporabnik lahko ustrezno spremeni dolžino gesla, tako da zamenja številko `12`.

Pojasnilo:

  1. Skript se začne s shebangom (#!/bin/bash), kar pomeni, da ga je treba interpretirati z lupino Bash.
  2. Funkcija generate_password je definirana za ustvarjanje naključnega gesla. Takole deluje:
    • tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
    • fold -w 12 razdeli filtrirane naključne podatke v vrstice s širino 12 znakov.
    • head -n 1 izbere prvo vrstico in nam dejansko poda naključno zaporedje znakov dolžine 12.
  3. Spremenljivki gesla je dodeljen rezultat klica funkcije generate_password.
  4. Na koncu se ustvarjeno geslo prikaže z odmevom.

448

21) Napišite lupinski skript, ki izračuna skupno velikost vseh datotek v imeniku.

Tukaj je lupinski skript za izračun skupne velikosti vseh datotek v imeniku.

#!/bin/bash
imenik=/pot/do/vašega/imenika
total_size=$(du -csh $directory | grep total | awk ‘{print $1}’)
echo Skupna velikost datotek v $directory: $total_size

Pojasnilo:

  1. Skript se začne z #!/bin/bash shebang, kar pomeni, da ga je treba interpretirati z lupino Bash.
  2. Spremenljivka imenika je nastavljena na pot imenika, za katerega želite izračunati skupno velikost datoteke. Zamenjajte /path/to/your/directory z dejansko potjo.
  3. Ukaz du se uporablja za oceno porabe prostora za datoteke. Uporabljene možnosti so:
    • -c: Ustvari skupno vsoto.
    • -s: Prikaži samo skupno velikost navedenega imenika.
    • -h: Velikosti tiskanja v človeku berljivem formatu (npr. KB, MB, GB).
  4. Izhod du je posredovan grep total, da filtrira vrstico, ki vsebuje skupno velikost.
  5. awk '{print $1}' se uporablja za ekstrahiranje prvega polja (skupne velikosti) iz vrstice.
  6. Izračunana skupna velikost je shranjena v spremenljivki total_size.
  7. Na koncu skript prikaže skupno velikost z odmevom.
Skupna velikost datotek

Skupna velikost datotek

Tukaj smo uporabili ` pwd ` za ogled trenutne poti imenika.

22) Pojasnite razliko med stavkoma if in elif v skriptni lupini.

Funkcija `if`Staiftement Izjava `elif`
Namen Pojasnite razliko med stavkoma if in elif v skriptni lupini. Zagotavlja alternativne pogoje za preverjanje, kdaj je začetni pogoj if napačen.
uporaba Uporablja se za začetno stanje. Uporablja se za začetnim pogojem if za preverjanje dodatnih pogojev.
število blokov Lahko ima samo en blok if. Lahko ima več blokov elif, vendar samo en blok else (neobvezno).
Izvedba Izvede blok kode, povezan s stavkom if, če je pogoj resničen. Če je pogoj napačen, se izvede blok else (če je prisoten) (izbirno). Preveri vsak pogoj elif po vrstnem redu. Če je en pogoj elif resničen, se izvede ustrezen blok kode in skript zapusti celoten pogojni blok. Če nobeden od pogojev elif ni resničen, se izvede blok else (če je prisoten).
Ugnezdene strukture Lahko se ugnezdi znotraj drugih blokov if, elif ali else. Ni ga mogoče ugnezditi znotraj drugega bloka elif, lahko pa ga uporabite znotraj bloka if ali else.

Razumejmo to s primerom.

#!/bin/bash
število=5
če [$število -gt 10]; potem
echo $število je večje od 10
drugače
echo $število ni večje od 10
biti
odmev ——–
če [$število -gt 10]; potem
echo $število je večje od 10
elif [$število -eq 10]; potem
echo $število je enako 10
drugače
echo $število je manjše od 10
biti

Pojasnilo:

V tem primeru prvi blok if preveri, ali je število večje od 10. Če ni, natisne sporočilo, ki kaže, da število ni večje od 10. Drugi blok s stavki elif zaporedoma preverja več pogojev, dokler eden od njih ni resničen. V tem primeru, ker je vrednost števila 5, bo rezultat:

razlika if_elif

razlika if_elif

23) Kako uporabljate zanko while za ponavljajoče se izvajanje ukazov?

Zanka while se uporablja v skriptni lupini za ponavljajoče se izvajanje niza ukazov, dokler je podani pogoj resničen. Zanka nadaljuje z izvajanjem ukazov, dokler pogoj ne postane false.

Tukaj je osnovna sintaksa zanke while:

medtem ko [pogoj]; narediti
# Ukazi za izvedbo
Končano

Pojasnilo:

  1. Zanka `while` se začne s ključno besedo `while`, ki ji sledi pogoj v oglatih oklepajih `[ ]`.
  2. Telo zanke, ki vsebuje ukaze, ki jih je treba izvesti, je zaprto med ključnima besedama `do` in `done`.
  3. Zanka najprej preveri stanje. Če je pogoj resničen, se izvedejo ukazi v telesu zanke. Ko se telo zanke izvede, se pogoj znova preveri in postopek se ponavlja, dokler pogoj ne postane napačen.

primer: Če želimo natisniti številke od 1 do 5

#!/bin/bash
števec=1
medtem ko [ $counter -le 5 ]; narediti
echo Številka: $števec
števec=$((števec + 1))
Končano

Pojasnilo:

  • Spremenljivka števca je nastavljena na 1.
  • Zanka while preveri, ali je vrednost števca manjša ali enaka 5. Dokler je ta pogoj resničen, se zanka nadaljuje z izvajanjem.
  • Znotraj zanke se trenutna vrednost števca natisne z odmevom.
  • Števec se poveča za 1 z uporabo izraza $((števec + 1)).
medtem ko zanka

medtem ko zanka

24) Ustvarite lupinski skript, ki najde in izpiše vse prazne datoteke v imeniku.

Skript lupine, ki ga lahko uporabite za iskanje in seznam vseh praznih datotek v imeniku z uporabo ukazov `find` in `stat`:

#!/bin/bash
imenik=$1″
if [ -z $imenik ]; potem
echo Uporaba: $0
izhod 1
biti

če [! -d $imenik]; potem
echo Napaka: '$directory' ni veljaven imenik.
izhod 1
biti
echo Prazne datoteke v $directory:
najdi $imenik -tip f -prazen

Pojasnilo:

  1. ` #!/bin/bash `: To se imenuje shebang in operacijskemu sistemu pove, naj uporabi lupino Bash za interpretacijo in izvedbo skripta.
  2. ` imenik=$1″ `: Ta vrstica dodeli prvi argument ukazne vrstice (označen z $1) spremenljivki ` imenik `.
  3. ` if [ -z $imenik ]; potem `: Ta vrstica začne stavek if, ki preveri, ali je ` imenik ` spremenljivka je prazna (-z preveri prazen niz).
  4. ` echo Uporaba: $0 `: Če je imenik prazen, ta vrstica natisne sporočilo o uporabi, kjer je ` 0 $ ` predstavlja ime skripta.
  5. ` izhod 1 `: Ta vrstica zapusti skript z izhodno kodo ` 1 `, ki označuje napako.
  6. ` biti `: Ta vrstica označuje konec ` če ` izjava.
  7. ` če [! -d $imenik]; potem `: To zažene drug stavek if za preverjanje, ali navedeni imenik obstaja (` -d ` preizkusi za imenik).
  8. ` echo Napaka: '$directory' ni veljaven imenik. `: Če navedeni imenik ne obstaja, ta vrstica natisne sporočilo o napaki.
  9. ` izhod 1 `: Zapre skript z izhodno kodo ` 1 `.
  10. ` biti `: Označuje konec drugega ` če` izjava.
  11. ` echo Prazne datoteke v $directory: `: Če je do zdaj vse veljavno, ta vrstica natisne sporočilo, ki nakazuje, da bo skript prikazal prazne datoteke v navedenem imeniku.
  12. ` najdi $imenik -tip f -prazen `: Ta vrstica uporablja ` najti ` ukaz za iskanje praznih datotek (` -prazno `) vrste običajnih datotek (` - tip f `) v podanem imeniku. Nato navede te prazne datoteke.
Iskanje praznih datotek

Iskanje praznih datotek

Opomba : Pri zagonu skripta moramo zagotoviti imenik kot argument. Tukaj smo uporabili pot trenutnega imenika home/jayeshkumar/

25) Kakšen je namen ukaza read v skriptni lupini?

Ukaz za branje v skriptni lupini omogoča, da vas skript vpraša za informacije. To je tako, kot če bi vam računalnik zastavil vprašanje in čakal na vaš odgovor. To je uporabno za skripte, ki zahtevajo, da nekaj vtipkate, ali ko mora skript delati z informacijami iz datotek. Ukaz za branje pomaga skriptu, da se ustavi in ​​počaka na tisto, kar vtipkate, nato pa lahko te podatke uporabi za več stvari v skriptu.

Sintaksa ukaza za branje:

read variable_name>

Primer : Če želimo vzeti ime kot vnos od uporabnika, da ga natisnemo.

#!/bin/bash
echo Prosimo, vnesite svoje ime:
preberi ime
echo Pozdravljeni, $name!

453

preberi nam

Če povzamemo, ukaz za branje se uporablja za zajemanje uporabniškega vnosa ali podatkov iz datotek znotraj lupinskih skriptov, zaradi česar so skripti bolj interaktivni in vsestranski.

26) Napišite lupinski skript, ki pretvori vsa imena datotek v imeniku v male črke.

Tukaj je lupinski skript, ki pretvori vsa imena datotek v imeniku v male črke.

#!/bin/bash
imenik=$1″
if [ -z $imenik ]; potem
echo Uporaba: $0
izhod 1
biti

če [! -d $imenik]; potem

echo Napaka: '$directory' ni veljaven imenik.
izhod 1
biti

cd $imenik || izhod 1

za datoteko v *; narediti
if [ -f $file ]; potem
novo ime=$(echo $file | tr 'A-Z' 'a-z')
[ $file != $newname ] && mv $file $newname
biti
Končano

Pojasnilo:

  1. #!/bin/bash : To je shebang, ki določa, da je treba skript interpretirati z lupino Bash.
  2. imenik=$1″ : Ta vrstica dodeli prvi argument ukazne vrstice imeniku spremenljivk.
  3. if [ -z $imenik ]; potem : Ta vrstica preveri, ali je spremenljivka imenika prazna (pri izvajanju skripta ni podanega argumenta).
  4. echo Uporaba: $0 : Če je imenik prazen, ta vrstica natisne sporočilo o uporabi z imenom skripta ($0).
  5. izhod 1 : Ta vrstica zapusti skript z izhodno kodo 1, kar pomeni, da je prišlo do napake.
  6. f i: To označuje konec prvega stavka if.
  7. če [! -d $imenik]; potem : Ta vrstica preveri, ali navedeni imenik ne obstaja (-d preizkusi imenik).
  8. echo Napaka: '$directory' ni veljaven imenik. : Če navedeni imenik ne obstaja, ta vrstica natisne sporočilo o napaki.
  9. izhod 1 : zapusti skript z izhodno kodo 1.
  10. biti : Označi konec drugega stavka if.
  11. cd $imenik || izhod 1 : spremeni trenutni delovni imenik v podani imenik. Če sprememba imenika ne uspe (npr. imenik ne obstaja), se skript zapre s kodo napake.
  12. za datoteko v *; narediti: jaz za datoteko v *; narediti: začne zanko, ki ponovi vse elemente v trenutnem imeniku (* se ujema z vsemi imeni datotek).
  13. if [ -f $file ]; potem : preveri, ali je trenutni element ponovitve zanke navadna datoteka (-f preizkusi navadno datoteko).
  14. novo ime=$(echo $file | tr 'A-Z' 'a-z') : Pretvori trenutno ime datoteke ($file) v male črke z uporabo ukaza tr in shrani rezultat v spremenljivko newname.
  15. [ $file != $newname ] && mv $file $newname : primerja izvirno ime datoteke z novim imenom datoteke z malimi črkami. Če sta drugačna, datoteko preimenuje z ukazom mv.
  16. biti : Označuje konec notranjega stavka if.
  17. Končano : Označuje konec zanke.

454

Opomba : Pri zagonu skripta moramo zagotoviti imenik kot argument. Tukaj smo uporabili pot trenutnega imenika home/jayeshkumar/test

27) Kako lahko uporabite aritmetične operacije znotraj lupinskega skripta?

Aritmetične operacije je mogoče izvajati znotraj lupinskega skripta z uporabo različnih vgrajenih metod. Lupina ponuja mehanizme za preproste aritmetične izračune z uporabo aritmetične razširitve, kot je:

  1. Aritmetična razširitev ($((…)))
  2. Uporaba ukaza expr
  3. Uporaba ukaza let

Tukaj je naš skript lupine, ki razlaga vse tri metode za aritmetične operacije.

#!/bin/bash
num1=10
num2=5

#Aritmetična razširitev ($((…)))

rezultat=$((num1 + num2))
echo Vsota: $rezultat

#Uporaba ukaza expr

vsota=$(izraz $num1 + $num2)
echo Vsota: $vsota

#Uporaba ukaza let

naj bo vsota = num1 + num2
echo Vsota: $vsota

Pojasnilo:

  1. `#!/bin/bash` : To je shebang, ki določa, da je treba skript tolmačiti z lupino Bash.
  2. `num1=10` in ` num2=5` : Te vrstice dodelijo vrednosti 10 in 5 spremenljivkam ` št.1 ` in ` št.2 ` oziroma.
  3. `#Aritmetična razširitev ($((…)))` : To je komentar, ki označuje začetek odseka, ki prikazuje aritmetično razširitev.
  4. `rezultat=$((num1 + num2))` : Ta vrstica uporablja aritmetično razširitev za izračun vsote ` št.1 ` in ` št.2 ` in shrani rezultat v ` rezultat ` spremenljivka.
  5. `echo Sum: $rezultat` : Ta vrstica natisne izračunano vsoto z uporabo vrednosti, shranjene v ` rezultat ` spremenljivka.
  6. `#Uporaba ukaza expr` : To je komentar, ki označuje začetek razdelka, ki prikazuje uporabo znaka ` ekspr ` ukaz za aritmetične operacije.
  7. `vsota=$(izraz $num1 + $num2)` : Ta vrstica uporablja ` ekspr ` ukaz za izračun vsote ` št.1 ` in ` št.2 ` in shrani rezultat v ` vsota ` spremenljivka. Upoštevajte, da ` ekspr Ukaz ` zahteva presledke okoli operatorjev.
  8. `echo Sum: $sum` : Ta vrstica natisne izračunano vsoto z uporabo vrednosti, shranjene v ` vsota ` spremenljivka.
  9. `#Uporaba ukaza let` : To je komentar, ki označuje začetek razdelka, ki prikazuje uporabo znaka ` pustiti ` ukaz za aritmetične operacije.
  10. `naj vsota = num1 + num2″` : Ta vrstica uporablja ` pustiti ` ukaz za izračun vsote ` št.1 ` in ` št.2 ` in rezultat dodeli ` vsota ` spremenljivka. ` pustiti Ukaz ` ne zahteva presledkov okoli operatorjev.
  11. `echo Sum: $sum` : Ta vrstica natisne izračunano vsoto z uporabo vrednosti, shranjene v ` vsota ` spremenljivka.
aritmetika

aritmetika

28) Ustvarite skript, ki preveri, ali je omrežni gostitelj dosegljiv.

Tukaj je preprost lupinski skript, ki uporablja ukaz ping za preverjanje, ali je omrežni gostitelj dosegljiv:

#!/bin/bash
gostitelj=$1″
če [ -z $gostitelj ]; potem
echo Uporaba: $0
izhod 1
biti
ping -c 4 $gostitelj

če [ $? -eq 0]; potem
echo $host je dosegljiv.
drugače
echo $host ni dosegljiv.
biti

Pojasnilo:

  1. Kot argument vzame ime gostitelja ali naslov IP in preveri, ali je argument naveden.
  2. Če ni podanega nobenega argumenta, prikaže sporočilo o uporabi in se zapre.
  3. Uporablja ukaz ping z možnostjo -c 4 za pošiljanje štirih zahtev za odmev ICMP navedenemu gostitelju.
  4. Ko se zažene ukaz ping, preveri stanje izhoda ($?). Če je status izhoda 0, to pomeni, da je gostitelj dosegljiv in skript natisne sporočilo o uspehu. V nasprotnem primeru natisne sporočilo o napaki.

456

Opomba : Ime gostitelja moramo zagotoviti kot argument pri zagonu skripta. Tukaj smo uporabili google.com

29) Napišite lupinski skript za iskanje največjega elementa v nizu:

Tukaj je lupinski skript za iskanje največjega elementa v nizu.

#!/bin/bash
# Deklarirajte matriko
niz=(3 56 24 89 67)

# Inicializirajte spremenljivko za shranjevanje največje vrednosti, začenši s prvim elementom

max=${matrika[0]}

# Iteracija skozi matriko

za num v ${array[@]}; narediti

# Primerjajte vsak element s trenutnim maksimumom

if ((num> max)); potem
največ=$št
biti
Končano

# Natisnite največjo vrednost

echo Največji element v matriki je: $max

Pojasnilo:

  1. ` #!/bin/bash `: vrstica shebang določa, da je treba skript interpretirati z lupino Bash.
  2. ` niz=(3 56 24 89 67) `: Niz je deklariran in inicializiran z vrednostmi.
  3. ` max=${matrika[0]} `: `max` se inicializira s prvim elementom matrike.
  4. ` za num v ${array[@]}; narediti `: zanka `za` se uporablja za ponavljanje elementov matrike.
  5. ` if ((num> max)); potem `: Stavek `if` preveri, ali je trenutni element `num` večji od trenutnega največjega `max`.
  6. ` max=$num`: če`num ` je večji od `max`, `max` se posodobi z vrednostjo num.
  7. ` Končano `: Zanka `za` je zaprta.
  8. ` echo Največji element v matriki je: $max `: Končno skript natisne največjo vrednost, najdeno v matriki.
461

največje število

30) Napišite skripto za izračun vsote elementov v matriki.

#!/bin/bash

# Deklarirajte matriko

niz=(1 65 22 19 94)

# Inicializirajte spremenljivko za shranjevanje vsote

vsota=0

# Iterirajte skozi matriko in dodajte vsak element k vsoti

za num v ${array[@]}; narediti
am=$((am + am))
Končano

# Izpiši vsoto

echo Vsota elementov v matriki je: $sum

Pojasnilo:

` #!/bin/bash `: vrstica shebang določa, da je treba skript interpretirati z lupino Bash.

` niz=(1 65 22 19 94) `: Niz je deklariran in inicializiran z vrednostmi.

` vsota=0 `:` vsota ` se inicializira na nič, da zadrži vsoto elementov.

` za num v ${array[@]}; narediti `:A` za ` zanka se uporablja za ponavljanje elementov matrike.

` am=$((am + am)) `: Znotraj zanke, vsak element ` na enem ` je dodan v ` vsota ` spremenljivka.

` Končano `: ` za ` zanka je zaprta.

`echo Vsota elementov v matriki je: $sum`: Na koncu skript natisne vsoto vseh elementov v matriki.

462

Vsota elementov

Izvedite več o lupinskih skriptih

Zaključek

Vsi geeki vemo, da je lupinski skript zelo koristen za povečanje delovne produktivnosti in prihranek časa. Torej, v tem članku smo zajeli 30 zelo uporabnih in najbolj prevarantskih primerov lupinskih skriptov . Upamo, da vam bo ta popoln vodnik o primeru lupinskega skripta pomagal razumeti vse o lupinskih skriptih.




izhod 1
biti

če [! -d $imenik]; potem
echo Napaka: '$directory' ni veljaven imenik.
izhod 1
biti
echo Prazne datoteke v $directory:
najdi $imenik -tip f -prazen

Pojasnilo:

  1. ` #!/bin/bash `: To se imenuje shebang in operacijskemu sistemu pove, naj uporabi lupino Bash za interpretacijo in izvedbo skripta.
  2. ` imenik=″ `: Ta vrstica dodeli prvi argument ukazne vrstice (označen z ) spremenljivki ` imenik `.
  3. ` if [ -z $imenik ]; potem `: Ta vrstica začne stavek if, ki preveri, ali je ` imenik ` spremenljivka je prazna (-z preveri prazen niz).
  4. ` echo Uporaba:

    Za vse distribucije Linuxa je lupinski skript kot čarobna palica, ki avtomatizira proces, uporabnikom prihrani čas in poveča produktivnost. Ta vadnica za skriptiranje vas bo seznanila s 25 plus primeri skriptiranja.

    Toda preden preidemo na temo lupinsko skriptiranje primeri, razumejmo lupinski skript in dejanske primere uporabe lupinskega skripta.

    Kaj je Shell Script?

    No, lupina je a CLI ( tolmač ukazne vrstice ), ki se izvaja v besedilnem oknu, kjer lahko uporabniki upravljajo in izvajajo ukaze lupine. Po drugi strani pa postopek pisanja nabora ukazov, ki se izvajajo v sistemu Linux. Datoteka, ki vključuje takšna navodila, se imenuje bash skript.

    Uporaba lupinskih skriptov

    Spodaj je nekaj pogostih uporab lupinskega skripta:

    • Avtomatizacija nalog – Uporablja se lahko za avtomatizacijo ponavljajočih se nalog, kot so običajne varnostne kopije in nameščanje programske opreme.
    • Prilagajanje – Uporabite lahko lupinske skripte za oblikovanje okolja ukazne vrstice in enostavno opravljanje svoje naloge glede na potrebe.
    • Upravljanje datotek – Lupinske skripte je mogoče uporabiti tudi za upravljanje in manipulacijo datotek in imenikov, kot so premikanje, kopiranje, preimenovanje ali brisanje datotek.

    Primeri lupinskih skriptov v Linuxu

    1) Kaj označuje znak (#!) na začetku lupinskega skripta?

    The drevo (#!) na začetku skripta označuje tolmača, ki naj se uporabi za izvedbo skripta. Sistemu pove, katera lupina ali tolmač naj interpretira ukaze skripta.

    Na primer: Recimo, da imamo skript z imenom myscript.sh napisano v lupini Bash:

    shebang

    shebang

    V tem primeru:

    • #!/bin/bash na začetku skripta pomeni, da je treba skript interpretirati z lupino Bash.
    • Ukazi echo se uporabljajo za tiskanje sporočil na terminal.

    2) Kako zaženete lupinski skript iz ukazne vrstice?

    Če želite zagnati lupinski skript iz ukazne vrstice, moramo slediti tem korakom:

    • Prepričajte se, da ima skriptna datoteka dovoljenja za izvedljivo uporabo ukaz chmod :
    chmod +x myscript.sh>
    • Izvedite skript z njegovim imenom datoteke:
    ./myscript.sh>

    Tukaj morate zamenjati myscrtipt.sh z imenom vašega skripta.

    3) Napišite lupinski skript, ki natisne techcodeview.com na terminal.

    Ustvarite ime skripta `myscript.sh` (uporabljamo ` Ker ` urejevalnik, izberete lahko poljuben urejevalnik)

    vim myscript.sh>

    #!/bin/bash
    # Ta skript natisne techcodeview.com na terminal
    echo techcodeview.com

    tiskano ime

    tiskano ime

    Naš skript naredimo izvršljiv z uporabo `chmod +x`, nato ga izvedemo z `./myscipt.sh` in dobimo želeni rezultat techcodeview.com.

    4) Pojasnite namen ukaza echo v skriptni lupini.

    The ukaz echo se uporablja za prikaz besedila ali spremenljivk na terminalu. Običajno se uporablja za tiskanje sporočil, vrednosti spremenljivk in generiranje izhodnih podatkov programa.

    434

    ukaz echo

    V tem primeru smo izvedli `echo` na terminalu neposredno, saj deluje enako znotraj skripta lupine.

    5) Kako lahko dodelite vrednost spremenljivki v lupinskem skriptu?

    Spremenljivkam so dodeljene vrednosti z uporabo operatorja dodeljevanja =.

    Na primer:

    #!/bin/bash
    # Dodeljevanje vrednosti spremenljivki
    ime=Jayesh
    starost=21
    echo $name $age

    Pojasnilo:

    • Spremenljivki imena je dodeljena vrednost Jayesh.
    • Spremenljivki starosti je pripisana vrednost 21.
    • echo se uporablja za tiskanje in `$name` `$age` se uporablja za klic vrednosti, shranjene v spremenljivkah.

    435

    6) Napišite lupinski skript, ki kot vhod sprejme uporabniško ime in ga pozdravi.

    Ustvarite ime skripta `example.sh`.

    #!/bin/bash
    # Vprašajte uporabnika za njegovo ime
    echo Kako ti je ime?
    preberi ime
    # Pozdravite uporabnika
    echo Pozdravljeni, $name! Lepo te je bilo srečati.

    Pojasnilo:

    • #!/bin/bash: To je shebang linija. Sistemu pove, naj za izvedbo skripta uporabi tolmač Bash.
    • # Vprašajte uporabnika za njegovo ime: To je komentar. Zagotavlja kontekst o prihajajoči kodi. Tolmač ignorira komentarje.
    • echo Kako ti je ime?: Ukaz echo se uporablja za prikaz besedila v dvojnih narekovajih na terminalu.
    • preberi ime: Ukaz za branje počaka, da uporabnik vnese besedilo, in ga shrani v ime spremenljivke.
    • echo Pozdravljeni, $name! Veseli me.: Ta vrstica uporablja ukaz echo za tiskanje pozdravnega sporočila, ki vključuje vrednost spremenljivke imena, ki je bila zbrana iz uporabnikovega vnosa.

    436

    7) Kako dodate komentarje lupinskemu skriptu?

    Komentarji v skriptni lupini se uporabljajo za zagotavljanje razlag ali konteksta kode. Tolmač jih ignorira in so namenjene samo ljudem, ki berejo scenarij. Komentarje lahko dodate s simbolom #.

    #!/bin/bash
    # To je komentar, ki pojasnjuje namen skripta
    odmev gfg

    8) Ustvarite lupinski skript, ki preveri, ali datoteka obstaja v trenutnem imeniku.

    Tukaj je skript, ki preveri, ali datoteka z imenom example.txt obstaja v trenutnem imeniku:

    #!/bin/bash
    datoteka=primer.txt
    # Preverite, ali datoteka obstaja
    if [ -e $file ]; potem
    echo Datoteka obstaja: $file
    drugače
    echo Datoteke ni mogoče najti: $file
    biti

    Pojasnilo:

    1. #!/bin/bash: To je shebang vrstica, ki določa tolmača (/bin/bash), ki bo uporabljen za izvajanje skripta.
    2. file=example.txt: Ta vrstica definira datoteko spremenljivke in ji dodeli vrednost example.txt. To lahko zamenjate z imenom datoteke, ki jo želite preveriti.
    3. if [ -e $file ]; potem: Ta vrstica začne stavek if. Pogoj [ -e $datoteka ] preveri, ali datoteka, določena z vrednostjo spremenljivke datoteke, obstaja. Zastavica -e se uporablja za preverjanje obstoja datoteke.
    4. echo Datoteka obstaja: $file: Če je pogoj resničen (tj. datoteka obstaja), ta vrstica natisne sporočilo, ki označuje, da datoteka obstaja, skupaj z imenom datoteke.
    5. else: Če je pogoj napačen (tj. datoteka ne obstaja), skript izvede kodo pod vejo else.
    6. echo Datoteke ni bilo mogoče najti: $file: Ta vrstica natisne sporočilo o napaki, ki označuje, da navedena datoteka ni bila najdena, skupaj z imenom datoteke.
    7. fi: Ta vrstica označuje konec stavka if.
    Iskanje datoteke

    Iskanje datoteke

    9) Kakšna je razlika med enojnimi narekovaji (‘) in dvojnimi narekovaji () v skriptni lupini?

    Enojni narekovaji (‘) in dvojni narekovaji () se uporabljajo za zapiranje nizov v skriptno lupino, vendar se obnašajo različno:

    • Enojni narekovaji: vse med enojnimi narekovaji se obravnava kot dobesedni niz. Imena spremenljivk in večina posebnih znakov niso razširjeni.
    • Dvojni narekovaji: Spremenljivke in določeni posebni znaki v dvojnih narekovajih so razširjeni. Vsebina je predmet zamenjave spremenljivke in zamenjave ukaza.

    #!/bin/bash

    abcd=Pozdravljeni
    echo '$abcd' # Izhod: $abcd
    echo $abcd # Izhod: Pozdravljeni

    10) Kako lahko uporabite argumente ukazne vrstice v lupinskem skriptu?

    Argumenti ukazne vrstice so vrednosti, ki se zagotovijo skriptu, ko se ta izvede. Do njih je mogoče dostopati znotraj skripta z uporabo posebnih spremenljivk, kot so $1, $2 itd., kjer $1 predstavlja prvi argument, $2 predstavlja drugi argument itd.

    Na primer: Če ime našega skripta v `example.sh`

    #!/bin/bash

    echo Ime skripta: $0
    echo Prvi argument: $1
    echo Drugi argument: $2

    Če zaženemo skript z `.example.sh hello_1 hello_2`, bo izpisal:

    argumenti cli

    argumenti cli

    11) Kako uporabljate zanko for za ponavljanje po seznamu vrednosti?

    Ustvarite ime skripta `example.sh`.

    #!/bin/bash

    sadje=(jabolko banana češnjev datum)
    za sadje v ${fruits[@]}; narediti
    echo Trenutno sadje: $sadje
    Končano

    Pojasnilo:

    Vrstica `fruits=` ustvari matriko z imenom sadje s štirimi elementi: jabolko, banana, češnja in datelj.

    • za sadje v ${fruits[@]}; do: Ta vrstica začne zanko for. Tukaj je, kaj vsak del pomeni:
    • za sadje: To deklarira spremenljivko zanke, imenovano sadje. V vsaki ponovitvi zanke bo fruit vseboval vrednost trenutnega elementa iz matrike fruits.
    • ${fruits[@]}: To je razširitev matrike, ki vzame vse elemente iz matrike fruits. Sintaksa ${…} zagotavlja, da se vsak element obravnava kot ločena postavka.
    • do: Ta ključna beseda označuje začetek telesa zanke.
    • echo Trenutni sad: $fruit: Znotraj zanke ta vrstica uporablja ukaz echo za prikaz trenutne vrednosti spremenljivke zanke fruit. Za vsako sadje v nizu natisne sporočilo, kot je trenutno sadje: jabolko.
    • done: Ta ključna beseda označuje konec telesa zanke. Skriptu sporoči, da se je zanka končala.
    za zanko

    za zanko

    12) Napišite lupinski skript, ki izračuna vsoto celih števil od 1 do N z uporabo zanke.

    Ustvarite ime skripta `example.sh`.

    #!/bin/bash

    echo Vnesite številko (N):
    preberi N
    vsota=0
    for (( i=1; i<=$N; i++ )); narediti
    vsota=$((vsota + i))
    Končano
    echo Vsota celih števil od 1 do $N je: $sum

    Pojasnilo:
    Skript se začne tako, da vas prosi, da vnesete številko (N) z read. Ta številka bo določila, kolikokrat se bo zanka zagnala.

    1. Spremenljivka sum je inicializirana na 0. Ta spremenljivka bo sledila vsoti celih števil.
    2. Zanka for se začne z for (( i=1; i<=$N; i++ )). Ta struktura zanke se uporablja za ponavljanje niza dejanj določeno število krat, v tem primeru od 1 do vrednosti N.
    3. Znotraj zanke se zgodijo te stvari:
      • i=1 nastavi spremenljivko zanke i na 1 na začetku vsake iteracije.
      • Pogoj zanke i<=$N preveri, ali je i še vedno manjši ali enak danemu številu N.
      • Če je pogoj resničen, se telo zanke izvede.
      • sum=$((sum + i)) izračuna novo vrednost vsote tako, da ji prišteje trenutno vrednost i. To sešteje cela števila od 1 do trenutne vrednosti i.
    4. Po vsaki ponovitvi i++ poveča vrednost i za 1.
    5. Zanka se nadaljuje, dokler pogoj i<=$N ne postane napačen (ko i postane večji od N).
    6. Ko je zanka končana, skript prikaže vsoto celih števil od 1 do vnesenega števila N.

    439

    13) Ustvarite skript, ki išče določeno besedo v datoteki in šteje njene pojavitve.

    Ustvarite ime skripta `word_count.sh`

    #!/bin/bash

    echo Vnesite besedo za iskanje:
    preberi ciljno_besedo
    echo Vnesite ime datoteke:
    preberi ime datoteke
    count=$(grep -o -w $target_word $filename | wc -l)
    echo Beseda '$target_word' se pojavi $count-krat v '$filename'.

    Pojasnilo:

    • echo Vnesite besedo za iskanje:: Ta vrstica prikaže sporočilo, ki uporabnika prosi, da vnese besedo, ki jo želi iskati v datoteki.
    • read target_word: Ta vrstica prebere vnos uporabnika in ga shrani v spremenljivko z imenom target_word.
    • echo Vnesite ime datoteke:: Ta vrstica prikaže sporočilo, ki uporabnika prosi, da vnese ime datoteke, v kateri želi iskati.
    • preberi ime datoteke: Ta vrstica prebere vnos, ki ga zagotovi uporabnik, in ga shrani v spremenljivko z imenom ime datoteke.
    • count=$(grep -o -w $target_word $filename | wc -l): Ta vrstica opravlja glavno delo skripta. Razčlenimo ga še naprej:
      • grep -o -w $target_word $filename: Ta del ukaza išče pojavitve ciljne_besede v navedenem imenu datoteke. Možnosti -o in -w zagotavljata, da se štejejo samo celotne besede.
      • |: To je cev, ki sprejme izhod prejšnjega ukaza in ga pošlje kot vhod v naslednji ukaz.
      • wc -l: Ta del ukaza uporablja ukaz wc za štetje števila vrstic v vnosu. Možnost -l posebej šteje vrstice.
      • Celoten ukaz izračuna število pojavitev ciljne_besede v datoteki in to število dodeli spremenljivki coun

    441

    14) Pojasnite razlike med standardnim izhodom (stdout) in standardno napako (stderr).

    Glavna razlika med standardnim izhodom (stdout) in standardno napako (stderr) je naslednja:

    • Standardni izhod (stdout): To je privzeti izhodni tok, kamor gre običajni izhod ukaza. Privzeto je prikazan na terminalu. Lahko ga preusmerite v datoteko z>.
    • Standardna napaka (stderr): To je izhodni tok za sporočila o napakah in opozorila. Privzeto je prikazan tudi na terminalu. Lahko ga preusmerite v datoteko z uporabo 2>.

    15) Pojasnite koncept pogojnih stavkov v skriptni lupini.

    Pogojni stavki v skriptni lupini omogočajo sprejemanje odločitev in nadzor nad potekom našega skripta na podlagi določenih pogojev. Našemu skriptu omogočajo izvajanje različnih nizov ukazov, odvisno od tega, ali je določen pogoj resničen ali napačen. Primarni pogojni stavki v skriptni lupini so stavek if, stavek elif (neobvezno) in stavek else (izbirno).

    Tukaj je osnovna struktura pogojnega stavka v skriptni lupini:

    če [ pogoj ]; potem
    # Ukazi za izvedbo, če je pogoj resničen
    elif [ drug_pogoj ]; potem
    # Ukazi za izvedbo, če je other_condition resničen (neobvezno)
    drugače
    # Ukazi za izvedbo, če nobeden od pogojev ni resničen (neobvezno)
    biti

    Pojasnilo:

    • [pogoj] = Ukaz, ki ovrednoti pogoj in vrne resnično (0) ali napačno (ničelno) izhodno stanje.
    • then = To je ključna beseda, ki nakazuje, da bodo ukazi, ki ji sledijo, izvedeni, če je pogoj ocenjen kot resničen.
    • elif = (okrajšava za else if) To je razdelek, ki nam omogoča, da določimo dodatne pogoje za preverjanje.
    • else = to je razdelek, ki vsebuje ukaze, ki bodo izvedeni, če nobeden od pogojev ni resničen.
    • fi = To je ključna beseda, ki označuje konec pogojnega bloka.

    16) Kako berete vrstice iz datoteke znotraj lupinskega skripta?

    Za brati vrstice iz datoteke znotraj lupinskega skripta, lahko uporabimo različne metode, vendar je eden od pogostih pristopov uporaba zanke while v kombinaciji z ukazom read. Takole lahko to storimo:

    #!/bin/bash
    file=/home/jayeshkumar/jayesh.txt
    # Preverite, ali datoteka obstaja
    if [ -e $file ]; potem
    medtem ko IFS= preberi -r vrstico; narediti
    echo Branje vrstice: $line
    # Tukaj dodajte svojo logiko obdelave
    končano <$file
    drugače
    echo Datoteke ni mogoče najti: $file
    biti

    Pojasnilo:

    1. #!/bin/bash: To je shebang vrstica, ki določa tolmača (/bin/bash), ki bo uporabljen za izvajanje skripta.
    2. file=/home/jayeshkumar/jayesh.txt: Ta vrstica definira datoteko spremenljivke in dodeli celotno pot do datoteke jayesh.txt v imeniku /home/jayeshkumar. Spremenite to pot, da bo ustrezala dejanski poti datoteke, ki jo želite prebrati.
    3. if [ -e $file ]; potem: Ta vrstica začne stavek if. Preveri, ali datoteka, podana s spremenljivko $file, obstaja. Zastavica -e preverja obstoj datoteke.
    4. medtem ko IFS= preberi -r vrstico; do: Ta vrstica sproži zanko while, ki bere vrstice iz datoteke.
      • IFS=: IFS (notranje ločilo polj) je nastavljeno na prazno vrednost, da ohrani presledke na začetku in na koncu.
      • read -r line: To prebere trenutno vrstico iz datoteke in jo shrani v spremenljivo vrstico.
    5. echo Prebrana vrstica: $line: Ta vrstica natisne vsebino vrstice, ki je bila prebrana iz datoteke. Spremenljivka $line vsebuje vsebino trenutne vrstice.
    6. # Tukaj dodajte svojo logiko obdelave: To je komentar mesta, kjer lahko dodate svojo logiko za obdelavo vsake vrstice. Na primer, lahko analizirate vrstico, izvlečete informacije ali izvedete določena dejanja na podlagi vsebine.
    7. done <$file: To označuje konec zanke while. < $file preusmeri vsebino datoteke, ki jo prebere zanka.
    8. else: Če datoteka ne obstaja (pogoj v stavku if je napačen), skript izvede kodo pod vejo else.
    9. echo Datoteke ni bilo mogoče najti: $file: Ta vrstica natisne sporočilo o napaki, ki nakazuje, da navedena datoteka ni bila najdena.
    10. fi: Ta vrstica označuje konec stavka if.
    bralna datoteka

    bralna datoteka

    Tukaj smo uporabili ` pwd ` ukaz za pridobitev poti trenutnega imenika.

    17) V lupinskem skriptu napišite funkcijo, ki izračuna faktorial danega števila.

    Tukaj je scenarij, kiizračunaj faktorijeldanega števila.

    #!/bin/bash
    # Definirajte funkcijo za izračun faktoriala
    izračunaj_faktorial() {
    num=1$
    dejstvo=1
    for ((i=1; i<=num; i++)); narediti
    dejstvo=$((dejstvo * i))
    Končano
    echo $fact
    }
    # Pozove uporabnika, da vnese številko
    echo Vnesite številko:
    preberi input_num
    # Pokličite funkcijo izračun faktorja z vneseno številko
    faktorski_rezultat=$(izračunaj_faktorski $input_num)
    # Prikaži faktorski rezultat
    echo Faktorial $input_num je: $factorial_result

    Pojasnilo:

    1. Skript se začne z vrstico shebang #!/bin/bash za podajanje tolmača.
    2. Calculate_factorial() je definiran kot funkcija. Potrebuje en argument, num, ki je število, za katerega je treba izračunati faktorial.
    3. Znotraj funkcije je dejstvo inicializirano na 1. Ta spremenljivka bo shranila faktorski rezultat.
    4. Zanka for ponavlja od 1 do danega števila (num). V vsaki ponovitvi pomnoži trenutno vrednost dejstva z indeksom zanke i.
    5. Ko je zanka končana, spremenljivka dejstva vsebuje izračunani faktorial.
    6. Skript uporabnika pozove, da vnese številko z read.
    7. Funkcija Calculate_factorial se pokliče s številko, ki jo poda uporabnik, rezultat pa se shrani v spremenljivko factorial_result.
    8. Nazadnje skript prikaže izračunani faktorski rezultat.
    Faktorial

    Faktoriel

    18) Kako ravnate s signali, kot je Ctrl+C v lupinskem skriptu?

    V lupinskem skriptu lahko z ukazom trap upravljate s signali, kot je Ctrl+C (znan tudi kot SIGINT). Ctrl+C ustvari signal SIGINT, ko ga uporabnik pritisne, da prekine izvajajoči se skript ali program. Z uporabo ukaza trap lahko določite dejanja, ki naj bodo izvedena, ko je prejet določen signal. Tako ravnate s signali, kot je Ctrl+C, v lupinskem skriptu:

    #!/bin/bash
    pospravi() {
    echo Skript prekinjen. Izvajanje čiščenja …
    # Tukaj dodajte svoja dejanja čiščenja
    izhod 1
    }
    # Nastavite past za klic funkcije čiščenja, ko prejmete Ctrl+C (SIGINT).
    čiščenje pasti SIGINT
    # Preostanek vašega scenarija
    echo Teče …
    spati 10
    odmev Končano.

    Ravnanje s signali je pomembno za robustnost skriptov in zagotavljanje, da elegantno obravnavajo nepričakovane prekinitve. Funkcijo čiščenja lahko prilagodite svojim posebnim potrebam, na primer zapiranje datotek, zaustavitev procesov ali beleženje podatkov, preden se skript zapre.

    Pojasnilo:

    1. #!/bin/bash: Ta vrstica shebang določa tolmača, ki bo uporabljen za izvajanje skripta.
    2. cleanup() { … }: To definira funkcijo z imenom cleanup. Znotraj te funkcije lahko vključite vsa dejanja, ki jih je treba izvesti, ko je skript prekinjen, na primer zapiranje datotek, sprostitev virov ali izvajanje drugih nalog čiščenja.
    3. trap cleanup SIGINT: Ukaz trap se uporablja za nastavitev upravljalnika signalov. V tem primeru določa, da se ob prejemu signala SIGINT (Ctrl+C) izvede funkcija čiščenja.
    4. echo Running…, sleep 10, echo Finished.: To so samo vzorčni ukazi za simulacijo izvajanja skripta.

    446

    19) Ustvarite skript, ki preveri in odstrani podvojene vrstice v besedilni datoteki.

    Tukaj je naš skript za linux, v katerem bomo odstranili podvojene vrstice iz besedilne datoteke.

    #!/bin/bash
    vhodna_datoteka=vhod.txt
    izhodna_datoteka=izhod.txt
    razvrsti $input_file | uniq> $output_file
    echo Podvojene vrstice so bile uspešno odstranjene.

    Pojasnilo:

    1. Skript se začne s shebangom (#!/bin/bash), kar pomeni, da je treba skript interpretirati z lupino Bash.
    2. Spremenljivka input_file je nastavljena na ime vhodne datoteke, ki vsebuje podvojene vrstice (to spremenite v svoje dejansko ime vhodne datoteke).
    3. Spremenljivka output_file je nastavljena na ime izhodne datoteke, kjer bodo odstranjeni dvojniki (to spremenite v želeno ime izhodne datoteke).
    4. Skript uporablja ukaz sort za razvrščanje vrstic v vhodni datoteki. Razvrščanje vrstic zagotavlja, da so podvojene vrstice združene skupaj.
    5. Razvrščene vrstice se nato prenesejo skozi ukaz uniq, ki odstrani zaporedne podvojene vrstice. Izhod tega procesa je preusmerjen v izhodno datoteko.
    6. Ko so dvojniki odstranjeni, skript natisne sporočilo o uspehu.
    odstranjevanje podvojenih vrstic

    odstranjevanje podvojenih vrstic

    Tukaj uporabljamo ` mačka ` za prikaz besedila znotraj besedilne datoteke.

    20) Napišite skripto, ki ustvari varno naključno geslo.

    Tukaj je naš skript za ustvarjanje varnega naključnega gesla.

    #!/bin/bash
    # Funkcija za ustvarjanje naključnega gesla
    generiraj_geslo() {
    tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
    }
    # Pokličite funkcijo in shranite generirano geslo
    geslo=$(generiraj_geslo)
    echo Ustvarjeno geslo: $password

    Opomba: Uporabnik lahko ustrezno spremeni dolžino gesla, tako da zamenja številko `12`.

    Pojasnilo:

    1. Skript se začne s shebangom (#!/bin/bash), kar pomeni, da ga je treba interpretirati z lupino Bash.
    2. Funkcija generate_password je definirana za ustvarjanje naključnega gesla. Takole deluje:
      • tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
      • fold -w 12 razdeli filtrirane naključne podatke v vrstice s širino 12 znakov.
      • head -n 1 izbere prvo vrstico in nam dejansko poda naključno zaporedje znakov dolžine 12.
    3. Spremenljivki gesla je dodeljen rezultat klica funkcije generate_password.
    4. Na koncu se ustvarjeno geslo prikaže z odmevom.

    448

    21) Napišite lupinski skript, ki izračuna skupno velikost vseh datotek v imeniku.

    Tukaj je lupinski skript za izračun skupne velikosti vseh datotek v imeniku.

    #!/bin/bash
    imenik=/pot/do/vašega/imenika
    total_size=$(du -csh $directory | grep total | awk ‘{print $1}’)
    echo Skupna velikost datotek v $directory: $total_size

    Pojasnilo:

    1. Skript se začne z #!/bin/bash shebang, kar pomeni, da ga je treba interpretirati z lupino Bash.
    2. Spremenljivka imenika je nastavljena na pot imenika, za katerega želite izračunati skupno velikost datoteke. Zamenjajte /path/to/your/directory z dejansko potjo.
    3. Ukaz du se uporablja za oceno porabe prostora za datoteke. Uporabljene možnosti so:
      • -c: Ustvari skupno vsoto.
      • -s: Prikaži samo skupno velikost navedenega imenika.
      • -h: Velikosti tiskanja v človeku berljivem formatu (npr. KB, MB, GB).
    4. Izhod du je posredovan grep total, da filtrira vrstico, ki vsebuje skupno velikost.
    5. awk '{print $1}' se uporablja za ekstrahiranje prvega polja (skupne velikosti) iz vrstice.
    6. Izračunana skupna velikost je shranjena v spremenljivki total_size.
    7. Na koncu skript prikaže skupno velikost z odmevom.
    Skupna velikost datotek

    Skupna velikost datotek

    Tukaj smo uporabili ` pwd ` za ogled trenutne poti imenika.

    22) Pojasnite razliko med stavkoma if in elif v skriptni lupini.

    Funkcija `if`Staiftement Izjava `elif`
    Namen Pojasnite razliko med stavkoma if in elif v skriptni lupini. Zagotavlja alternativne pogoje za preverjanje, kdaj je začetni pogoj if napačen.
    uporaba Uporablja se za začetno stanje. Uporablja se za začetnim pogojem if za preverjanje dodatnih pogojev.
    število blokov Lahko ima samo en blok if. Lahko ima več blokov elif, vendar samo en blok else (neobvezno).
    Izvedba Izvede blok kode, povezan s stavkom if, če je pogoj resničen. Če je pogoj napačen, se izvede blok else (če je prisoten) (izbirno). Preveri vsak pogoj elif po vrstnem redu. Če je en pogoj elif resničen, se izvede ustrezen blok kode in skript zapusti celoten pogojni blok. Če nobeden od pogojev elif ni resničen, se izvede blok else (če je prisoten).
    Ugnezdene strukture Lahko se ugnezdi znotraj drugih blokov if, elif ali else. Ni ga mogoče ugnezditi znotraj drugega bloka elif, lahko pa ga uporabite znotraj bloka if ali else.

    Razumejmo to s primerom.

    #!/bin/bash
    število=5
    če [$število -gt 10]; potem
    echo $število je večje od 10
    drugače
    echo $število ni večje od 10
    biti
    odmev ——–
    če [$število -gt 10]; potem
    echo $število je večje od 10
    elif [$število -eq 10]; potem
    echo $število je enako 10
    drugače
    echo $število je manjše od 10
    biti

    Pojasnilo:

    V tem primeru prvi blok if preveri, ali je število večje od 10. Če ni, natisne sporočilo, ki kaže, da število ni večje od 10. Drugi blok s stavki elif zaporedoma preverja več pogojev, dokler eden od njih ni resničen. V tem primeru, ker je vrednost števila 5, bo rezultat:

    razlika if_elif

    razlika if_elif

    23) Kako uporabljate zanko while za ponavljajoče se izvajanje ukazov?

    Zanka while se uporablja v skriptni lupini za ponavljajoče se izvajanje niza ukazov, dokler je podani pogoj resničen. Zanka nadaljuje z izvajanjem ukazov, dokler pogoj ne postane false.

    Tukaj je osnovna sintaksa zanke while:

    medtem ko [pogoj]; narediti
    # Ukazi za izvedbo
    Končano

    Pojasnilo:

    1. Zanka `while` se začne s ključno besedo `while`, ki ji sledi pogoj v oglatih oklepajih `[ ]`.
    2. Telo zanke, ki vsebuje ukaze, ki jih je treba izvesti, je zaprto med ključnima besedama `do` in `done`.
    3. Zanka najprej preveri stanje. Če je pogoj resničen, se izvedejo ukazi v telesu zanke. Ko se telo zanke izvede, se pogoj znova preveri in postopek se ponavlja, dokler pogoj ne postane napačen.

    primer: Če želimo natisniti številke od 1 do 5

    #!/bin/bash
    števec=1
    medtem ko [ $counter -le 5 ]; narediti
    echo Številka: $števec
    števec=$((števec + 1))
    Končano

    Pojasnilo:

    • Spremenljivka števca je nastavljena na 1.
    • Zanka while preveri, ali je vrednost števca manjša ali enaka 5. Dokler je ta pogoj resničen, se zanka nadaljuje z izvajanjem.
    • Znotraj zanke se trenutna vrednost števca natisne z odmevom.
    • Števec se poveča za 1 z uporabo izraza $((števec + 1)).
    medtem ko zanka

    medtem ko zanka

    24) Ustvarite lupinski skript, ki najde in izpiše vse prazne datoteke v imeniku.

    Skript lupine, ki ga lahko uporabite za iskanje in seznam vseh praznih datotek v imeniku z uporabo ukazov `find` in `stat`:

    #!/bin/bash
    imenik=$1″
    if [ -z $imenik ]; potem
    echo Uporaba: $0
    izhod 1
    biti

    če [! -d $imenik]; potem
    echo Napaka: '$directory' ni veljaven imenik.
    izhod 1
    biti
    echo Prazne datoteke v $directory:
    najdi $imenik -tip f -prazen

    Pojasnilo:

    1. ` #!/bin/bash `: To se imenuje shebang in operacijskemu sistemu pove, naj uporabi lupino Bash za interpretacijo in izvedbo skripta.
    2. ` imenik=$1″ `: Ta vrstica dodeli prvi argument ukazne vrstice (označen z $1) spremenljivki ` imenik `.
    3. ` if [ -z $imenik ]; potem `: Ta vrstica začne stavek if, ki preveri, ali je ` imenik ` spremenljivka je prazna (-z preveri prazen niz).
    4. ` echo Uporaba: $0 `: Če je imenik prazen, ta vrstica natisne sporočilo o uporabi, kjer je ` 0 $ ` predstavlja ime skripta.
    5. ` izhod 1 `: Ta vrstica zapusti skript z izhodno kodo ` 1 `, ki označuje napako.
    6. ` biti `: Ta vrstica označuje konec ` če ` izjava.
    7. ` če [! -d $imenik]; potem `: To zažene drug stavek if za preverjanje, ali navedeni imenik obstaja (` -d ` preizkusi za imenik).
    8. ` echo Napaka: '$directory' ni veljaven imenik. `: Če navedeni imenik ne obstaja, ta vrstica natisne sporočilo o napaki.
    9. ` izhod 1 `: Zapre skript z izhodno kodo ` 1 `.
    10. ` biti `: Označuje konec drugega ` če` izjava.
    11. ` echo Prazne datoteke v $directory: `: Če je do zdaj vse veljavno, ta vrstica natisne sporočilo, ki nakazuje, da bo skript prikazal prazne datoteke v navedenem imeniku.
    12. ` najdi $imenik -tip f -prazen `: Ta vrstica uporablja ` najti ` ukaz za iskanje praznih datotek (` -prazno `) vrste običajnih datotek (` - tip f `) v podanem imeniku. Nato navede te prazne datoteke.
    Iskanje praznih datotek

    Iskanje praznih datotek

    Opomba : Pri zagonu skripta moramo zagotoviti imenik kot argument. Tukaj smo uporabili pot trenutnega imenika home/jayeshkumar/

    25) Kakšen je namen ukaza read v skriptni lupini?

    Ukaz za branje v skriptni lupini omogoča, da vas skript vpraša za informacije. To je tako, kot če bi vam računalnik zastavil vprašanje in čakal na vaš odgovor. To je uporabno za skripte, ki zahtevajo, da nekaj vtipkate, ali ko mora skript delati z informacijami iz datotek. Ukaz za branje pomaga skriptu, da se ustavi in ​​počaka na tisto, kar vtipkate, nato pa lahko te podatke uporabi za več stvari v skriptu.

    Sintaksa ukaza za branje:

    read variable_name>

    Primer : Če želimo vzeti ime kot vnos od uporabnika, da ga natisnemo.

    #!/bin/bash
    echo Prosimo, vnesite svoje ime:
    preberi ime
    echo Pozdravljeni, $name!

    453

    preberi nam

    Če povzamemo, ukaz za branje se uporablja za zajemanje uporabniškega vnosa ali podatkov iz datotek znotraj lupinskih skriptov, zaradi česar so skripti bolj interaktivni in vsestranski.

    26) Napišite lupinski skript, ki pretvori vsa imena datotek v imeniku v male črke.

    Tukaj je lupinski skript, ki pretvori vsa imena datotek v imeniku v male črke.

    #!/bin/bash
    imenik=$1″
    if [ -z $imenik ]; potem
    echo Uporaba: $0
    izhod 1
    biti

    če [! -d $imenik]; potem

    echo Napaka: '$directory' ni veljaven imenik.
    izhod 1
    biti

    cd $imenik || izhod 1

    za datoteko v *; narediti
    if [ -f $file ]; potem
    novo ime=$(echo $file | tr 'A-Z' 'a-z')
    [ $file != $newname ] && mv $file $newname
    biti
    Končano

    Pojasnilo:

    1. #!/bin/bash : To je shebang, ki določa, da je treba skript interpretirati z lupino Bash.
    2. imenik=$1″ : Ta vrstica dodeli prvi argument ukazne vrstice imeniku spremenljivk.
    3. if [ -z $imenik ]; potem : Ta vrstica preveri, ali je spremenljivka imenika prazna (pri izvajanju skripta ni podanega argumenta).
    4. echo Uporaba: $0 : Če je imenik prazen, ta vrstica natisne sporočilo o uporabi z imenom skripta ($0).
    5. izhod 1 : Ta vrstica zapusti skript z izhodno kodo 1, kar pomeni, da je prišlo do napake.
    6. f i: To označuje konec prvega stavka if.
    7. če [! -d $imenik]; potem : Ta vrstica preveri, ali navedeni imenik ne obstaja (-d preizkusi imenik).
    8. echo Napaka: '$directory' ni veljaven imenik. : Če navedeni imenik ne obstaja, ta vrstica natisne sporočilo o napaki.
    9. izhod 1 : zapusti skript z izhodno kodo 1.
    10. biti : Označi konec drugega stavka if.
    11. cd $imenik || izhod 1 : spremeni trenutni delovni imenik v podani imenik. Če sprememba imenika ne uspe (npr. imenik ne obstaja), se skript zapre s kodo napake.
    12. za datoteko v *; narediti: jaz za datoteko v *; narediti: začne zanko, ki ponovi vse elemente v trenutnem imeniku (* se ujema z vsemi imeni datotek).
    13. if [ -f $file ]; potem : preveri, ali je trenutni element ponovitve zanke navadna datoteka (-f preizkusi navadno datoteko).
    14. novo ime=$(echo $file | tr 'A-Z' 'a-z') : Pretvori trenutno ime datoteke ($file) v male črke z uporabo ukaza tr in shrani rezultat v spremenljivko newname.
    15. [ $file != $newname ] && mv $file $newname : primerja izvirno ime datoteke z novim imenom datoteke z malimi črkami. Če sta drugačna, datoteko preimenuje z ukazom mv.
    16. biti : Označuje konec notranjega stavka if.
    17. Končano : Označuje konec zanke.

    454

    Opomba : Pri zagonu skripta moramo zagotoviti imenik kot argument. Tukaj smo uporabili pot trenutnega imenika home/jayeshkumar/test

    27) Kako lahko uporabite aritmetične operacije znotraj lupinskega skripta?

    Aritmetične operacije je mogoče izvajati znotraj lupinskega skripta z uporabo različnih vgrajenih metod. Lupina ponuja mehanizme za preproste aritmetične izračune z uporabo aritmetične razširitve, kot je:

    1. Aritmetična razširitev ($((…)))
    2. Uporaba ukaza expr
    3. Uporaba ukaza let

    Tukaj je naš skript lupine, ki razlaga vse tri metode za aritmetične operacije.

    #!/bin/bash
    num1=10
    num2=5

    #Aritmetična razširitev ($((…)))

    rezultat=$((num1 + num2))
    echo Vsota: $rezultat

    #Uporaba ukaza expr

    vsota=$(izraz $num1 + $num2)
    echo Vsota: $vsota

    #Uporaba ukaza let

    naj bo vsota = num1 + num2
    echo Vsota: $vsota

    Pojasnilo:

    1. `#!/bin/bash` : To je shebang, ki določa, da je treba skript tolmačiti z lupino Bash.
    2. `num1=10` in ` num2=5` : Te vrstice dodelijo vrednosti 10 in 5 spremenljivkam ` št.1 ` in ` št.2 ` oziroma.
    3. `#Aritmetična razširitev ($((…)))` : To je komentar, ki označuje začetek odseka, ki prikazuje aritmetično razširitev.
    4. `rezultat=$((num1 + num2))` : Ta vrstica uporablja aritmetično razširitev za izračun vsote ` št.1 ` in ` št.2 ` in shrani rezultat v ` rezultat ` spremenljivka.
    5. `echo Sum: $rezultat` : Ta vrstica natisne izračunano vsoto z uporabo vrednosti, shranjene v ` rezultat ` spremenljivka.
    6. `#Uporaba ukaza expr` : To je komentar, ki označuje začetek razdelka, ki prikazuje uporabo znaka ` ekspr ` ukaz za aritmetične operacije.
    7. `vsota=$(izraz $num1 + $num2)` : Ta vrstica uporablja ` ekspr ` ukaz za izračun vsote ` št.1 ` in ` št.2 ` in shrani rezultat v ` vsota ` spremenljivka. Upoštevajte, da ` ekspr Ukaz ` zahteva presledke okoli operatorjev.
    8. `echo Sum: $sum` : Ta vrstica natisne izračunano vsoto z uporabo vrednosti, shranjene v ` vsota ` spremenljivka.
    9. `#Uporaba ukaza let` : To je komentar, ki označuje začetek razdelka, ki prikazuje uporabo znaka ` pustiti ` ukaz za aritmetične operacije.
    10. `naj vsota = num1 + num2″` : Ta vrstica uporablja ` pustiti ` ukaz za izračun vsote ` št.1 ` in ` št.2 ` in rezultat dodeli ` vsota ` spremenljivka. ` pustiti Ukaz ` ne zahteva presledkov okoli operatorjev.
    11. `echo Sum: $sum` : Ta vrstica natisne izračunano vsoto z uporabo vrednosti, shranjene v ` vsota ` spremenljivka.
    aritmetika

    aritmetika

    28) Ustvarite skript, ki preveri, ali je omrežni gostitelj dosegljiv.

    Tukaj je preprost lupinski skript, ki uporablja ukaz ping za preverjanje, ali je omrežni gostitelj dosegljiv:

    #!/bin/bash
    gostitelj=$1″
    če [ -z $gostitelj ]; potem
    echo Uporaba: $0
    izhod 1
    biti
    ping -c 4 $gostitelj

    če [ $? -eq 0]; potem
    echo $host je dosegljiv.
    drugače
    echo $host ni dosegljiv.
    biti

    Pojasnilo:

    1. Kot argument vzame ime gostitelja ali naslov IP in preveri, ali je argument naveden.
    2. Če ni podanega nobenega argumenta, prikaže sporočilo o uporabi in se zapre.
    3. Uporablja ukaz ping z možnostjo -c 4 za pošiljanje štirih zahtev za odmev ICMP navedenemu gostitelju.
    4. Ko se zažene ukaz ping, preveri stanje izhoda ($?). Če je status izhoda 0, to pomeni, da je gostitelj dosegljiv in skript natisne sporočilo o uspehu. V nasprotnem primeru natisne sporočilo o napaki.

    456

    Opomba : Ime gostitelja moramo zagotoviti kot argument pri zagonu skripta. Tukaj smo uporabili google.com

    29) Napišite lupinski skript za iskanje največjega elementa v nizu:

    Tukaj je lupinski skript za iskanje največjega elementa v nizu.

    #!/bin/bash
    # Deklarirajte matriko
    niz=(3 56 24 89 67)

    # Inicializirajte spremenljivko za shranjevanje največje vrednosti, začenši s prvim elementom

    max=${matrika[0]}

    # Iteracija skozi matriko

    za num v ${array[@]}; narediti

    # Primerjajte vsak element s trenutnim maksimumom

    if ((num> max)); potem
    največ=$št
    biti
    Končano

    # Natisnite največjo vrednost

    echo Največji element v matriki je: $max

    Pojasnilo:

    1. ` #!/bin/bash `: vrstica shebang določa, da je treba skript interpretirati z lupino Bash.
    2. ` niz=(3 56 24 89 67) `: Niz je deklariran in inicializiran z vrednostmi.
    3. ` max=${matrika[0]} `: `max` se inicializira s prvim elementom matrike.
    4. ` za num v ${array[@]}; narediti `: zanka `za` se uporablja za ponavljanje elementov matrike.
    5. ` if ((num> max)); potem `: Stavek `if` preveri, ali je trenutni element `num` večji od trenutnega največjega `max`.
    6. ` max=$num`: če`num ` je večji od `max`, `max` se posodobi z vrednostjo num.
    7. ` Končano `: Zanka `za` je zaprta.
    8. ` echo Največji element v matriki je: $max `: Končno skript natisne največjo vrednost, najdeno v matriki.
    461

    največje število

    30) Napišite skripto za izračun vsote elementov v matriki.

    #!/bin/bash

    # Deklarirajte matriko

    niz=(1 65 22 19 94)

    # Inicializirajte spremenljivko za shranjevanje vsote

    vsota=0

    # Iterirajte skozi matriko in dodajte vsak element k vsoti

    za num v ${array[@]}; narediti
    am=$((am + am))
    Končano

    # Izpiši vsoto

    echo Vsota elementov v matriki je: $sum

    Pojasnilo:

    ` #!/bin/bash `: vrstica shebang določa, da je treba skript interpretirati z lupino Bash.

    ` niz=(1 65 22 19 94) `: Niz je deklariran in inicializiran z vrednostmi.

    ` vsota=0 `:` vsota ` se inicializira na nič, da zadrži vsoto elementov.

    ` za num v ${array[@]}; narediti `:A` za ` zanka se uporablja za ponavljanje elementov matrike.

    ` am=$((am + am)) `: Znotraj zanke, vsak element ` na enem ` je dodan v ` vsota ` spremenljivka.

    ` Končano `: ` za ` zanka je zaprta.

    `echo Vsota elementov v matriki je: $sum`: Na koncu skript natisne vsoto vseh elementov v matriki.

    462

    Vsota elementov

    Izvedite več o lupinskih skriptih

    Zaključek

    Vsi geeki vemo, da je lupinski skript zelo koristen za povečanje delovne produktivnosti in prihranek časa. Torej, v tem članku smo zajeli 30 zelo uporabnih in najbolj prevarantskih primerov lupinskih skriptov . Upamo, da vam bo ta popoln vodnik o primeru lupinskega skripta pomagal razumeti vse o lupinskih skriptih.



    `: Če je imenik prazen, ta vrstica natisne sporočilo o uporabi, kjer je ` 0 $ ` predstavlja ime skripta.
  5. ` izhod 1 `: Ta vrstica zapusti skript z izhodno kodo ` 1 `, ki označuje napako.
  6. ` biti `: Ta vrstica označuje konec ` če ` izjava.
  7. ` če [! -d $imenik]; potem `: To zažene drug stavek if za preverjanje, ali navedeni imenik obstaja (` -d ` preizkusi za imenik).
  8. ` echo Napaka: '$directory' ni veljaven imenik. `: Če navedeni imenik ne obstaja, ta vrstica natisne sporočilo o napaki.
  9. ` izhod 1 `: Zapre skript z izhodno kodo ` 1 `.
  10. ` biti `: Označuje konec drugega ` če` izjava.
  11. ` echo Prazne datoteke v $directory: `: Če je do zdaj vse veljavno, ta vrstica natisne sporočilo, ki nakazuje, da bo skript prikazal prazne datoteke v navedenem imeniku.
  12. ` najdi $imenik -tip f -prazen `: Ta vrstica uporablja ` najti ` ukaz za iskanje praznih datotek (` -prazno `) vrste običajnih datotek (` - tip f `) v podanem imeniku. Nato navede te prazne datoteke.
Iskanje praznih datotek

Iskanje praznih datotek

Opomba : Pri zagonu skripta moramo zagotoviti imenik kot argument. Tukaj smo uporabili pot trenutnega imenika home/jayeshkumar/

25) Kakšen je namen ukaza read v skriptni lupini?

Ukaz za branje v skriptni lupini omogoča, da vas skript vpraša za informacije. To je tako, kot če bi vam računalnik zastavil vprašanje in čakal na vaš odgovor. To je uporabno za skripte, ki zahtevajo, da nekaj vtipkate, ali ko mora skript delati z informacijami iz datotek. Ukaz za branje pomaga skriptu, da se ustavi in ​​počaka na tisto, kar vtipkate, nato pa lahko te podatke uporabi za več stvari v skriptu.

hashset java

Sintaksa ukaza za branje:

read variable_name>

Primer : Če želimo vzeti ime kot vnos od uporabnika, da ga natisnemo.

#!/bin/bash
echo Prosimo, vnesite svoje ime:
preberi ime
echo Pozdravljeni, $name!

453

preberi nam

Če povzamemo, ukaz za branje se uporablja za zajemanje uporabniškega vnosa ali podatkov iz datotek znotraj lupinskih skriptov, zaradi česar so skripti bolj interaktivni in vsestranski.

26) Napišite lupinski skript, ki pretvori vsa imena datotek v imeniku v male črke.

Tukaj je lupinski skript, ki pretvori vsa imena datotek v imeniku v male črke.

#!/bin/bash
imenik=″
if [ -z $imenik ]; potem
echo Uporaba:

Za vse distribucije Linuxa je lupinski skript kot čarobna palica, ki avtomatizira proces, uporabnikom prihrani čas in poveča produktivnost. Ta vadnica za skriptiranje vas bo seznanila s 25 plus primeri skriptiranja.

Toda preden preidemo na temo lupinsko skriptiranje primeri, razumejmo lupinski skript in dejanske primere uporabe lupinskega skripta.

Kaj je Shell Script?

No, lupina je a CLI ( tolmač ukazne vrstice ), ki se izvaja v besedilnem oknu, kjer lahko uporabniki upravljajo in izvajajo ukaze lupine. Po drugi strani pa postopek pisanja nabora ukazov, ki se izvajajo v sistemu Linux. Datoteka, ki vključuje takšna navodila, se imenuje bash skript.

Uporaba lupinskih skriptov

Spodaj je nekaj pogostih uporab lupinskega skripta:

  • Avtomatizacija nalog – Uporablja se lahko za avtomatizacijo ponavljajočih se nalog, kot so običajne varnostne kopije in nameščanje programske opreme.
  • Prilagajanje – Uporabite lahko lupinske skripte za oblikovanje okolja ukazne vrstice in enostavno opravljanje svoje naloge glede na potrebe.
  • Upravljanje datotek – Lupinske skripte je mogoče uporabiti tudi za upravljanje in manipulacijo datotek in imenikov, kot so premikanje, kopiranje, preimenovanje ali brisanje datotek.

Primeri lupinskih skriptov v Linuxu

1) Kaj označuje znak (#!) na začetku lupinskega skripta?

The drevo (#!) na začetku skripta označuje tolmača, ki naj se uporabi za izvedbo skripta. Sistemu pove, katera lupina ali tolmač naj interpretira ukaze skripta.

Na primer: Recimo, da imamo skript z imenom myscript.sh napisano v lupini Bash:

shebang

shebang

V tem primeru:

  • #!/bin/bash na začetku skripta pomeni, da je treba skript interpretirati z lupino Bash.
  • Ukazi echo se uporabljajo za tiskanje sporočil na terminal.

2) Kako zaženete lupinski skript iz ukazne vrstice?

Če želite zagnati lupinski skript iz ukazne vrstice, moramo slediti tem korakom:

  • Prepričajte se, da ima skriptna datoteka dovoljenja za izvedljivo uporabo ukaz chmod :
chmod +x myscript.sh>
  • Izvedite skript z njegovim imenom datoteke:
./myscript.sh>

Tukaj morate zamenjati myscrtipt.sh z imenom vašega skripta.

3) Napišite lupinski skript, ki natisne techcodeview.com na terminal.

Ustvarite ime skripta `myscript.sh` (uporabljamo ` Ker ` urejevalnik, izberete lahko poljuben urejevalnik)

vim myscript.sh>

#!/bin/bash
# Ta skript natisne techcodeview.com na terminal
echo techcodeview.com

tiskano ime

tiskano ime

Naš skript naredimo izvršljiv z uporabo `chmod +x`, nato ga izvedemo z `./myscipt.sh` in dobimo želeni rezultat techcodeview.com.

4) Pojasnite namen ukaza echo v skriptni lupini.

The ukaz echo se uporablja za prikaz besedila ali spremenljivk na terminalu. Običajno se uporablja za tiskanje sporočil, vrednosti spremenljivk in generiranje izhodnih podatkov programa.

434

ukaz echo

V tem primeru smo izvedli `echo` na terminalu neposredno, saj deluje enako znotraj skripta lupine.

5) Kako lahko dodelite vrednost spremenljivki v lupinskem skriptu?

Spremenljivkam so dodeljene vrednosti z uporabo operatorja dodeljevanja =.

Na primer:

#!/bin/bash
# Dodeljevanje vrednosti spremenljivki
ime=Jayesh
starost=21
echo $name $age

Pojasnilo:

  • Spremenljivki imena je dodeljena vrednost Jayesh.
  • Spremenljivki starosti je pripisana vrednost 21.
  • echo se uporablja za tiskanje in `$name` `$age` se uporablja za klic vrednosti, shranjene v spremenljivkah.

435

6) Napišite lupinski skript, ki kot vhod sprejme uporabniško ime in ga pozdravi.

Ustvarite ime skripta `example.sh`.

#!/bin/bash
# Vprašajte uporabnika za njegovo ime
echo Kako ti je ime?
preberi ime
# Pozdravite uporabnika
echo Pozdravljeni, $name! Lepo te je bilo srečati.

Pojasnilo:

  • #!/bin/bash: To je shebang linija. Sistemu pove, naj za izvedbo skripta uporabi tolmač Bash.
  • # Vprašajte uporabnika za njegovo ime: To je komentar. Zagotavlja kontekst o prihajajoči kodi. Tolmač ignorira komentarje.
  • echo Kako ti je ime?: Ukaz echo se uporablja za prikaz besedila v dvojnih narekovajih na terminalu.
  • preberi ime: Ukaz za branje počaka, da uporabnik vnese besedilo, in ga shrani v ime spremenljivke.
  • echo Pozdravljeni, $name! Veseli me.: Ta vrstica uporablja ukaz echo za tiskanje pozdravnega sporočila, ki vključuje vrednost spremenljivke imena, ki je bila zbrana iz uporabnikovega vnosa.

436

7) Kako dodate komentarje lupinskemu skriptu?

Komentarji v skriptni lupini se uporabljajo za zagotavljanje razlag ali konteksta kode. Tolmač jih ignorira in so namenjene samo ljudem, ki berejo scenarij. Komentarje lahko dodate s simbolom #.

#!/bin/bash
# To je komentar, ki pojasnjuje namen skripta
odmev gfg

8) Ustvarite lupinski skript, ki preveri, ali datoteka obstaja v trenutnem imeniku.

Tukaj je skript, ki preveri, ali datoteka z imenom example.txt obstaja v trenutnem imeniku:

#!/bin/bash
datoteka=primer.txt
# Preverite, ali datoteka obstaja
if [ -e $file ]; potem
echo Datoteka obstaja: $file
drugače
echo Datoteke ni mogoče najti: $file
biti

Pojasnilo:

  1. #!/bin/bash: To je shebang vrstica, ki določa tolmača (/bin/bash), ki bo uporabljen za izvajanje skripta.
  2. file=example.txt: Ta vrstica definira datoteko spremenljivke in ji dodeli vrednost example.txt. To lahko zamenjate z imenom datoteke, ki jo želite preveriti.
  3. if [ -e $file ]; potem: Ta vrstica začne stavek if. Pogoj [ -e $datoteka ] preveri, ali datoteka, določena z vrednostjo spremenljivke datoteke, obstaja. Zastavica -e se uporablja za preverjanje obstoja datoteke.
  4. echo Datoteka obstaja: $file: Če je pogoj resničen (tj. datoteka obstaja), ta vrstica natisne sporočilo, ki označuje, da datoteka obstaja, skupaj z imenom datoteke.
  5. else: Če je pogoj napačen (tj. datoteka ne obstaja), skript izvede kodo pod vejo else.
  6. echo Datoteke ni bilo mogoče najti: $file: Ta vrstica natisne sporočilo o napaki, ki označuje, da navedena datoteka ni bila najdena, skupaj z imenom datoteke.
  7. fi: Ta vrstica označuje konec stavka if.
Iskanje datoteke

Iskanje datoteke

9) Kakšna je razlika med enojnimi narekovaji (‘) in dvojnimi narekovaji () v skriptni lupini?

Enojni narekovaji (‘) in dvojni narekovaji () se uporabljajo za zapiranje nizov v skriptno lupino, vendar se obnašajo različno:

  • Enojni narekovaji: vse med enojnimi narekovaji se obravnava kot dobesedni niz. Imena spremenljivk in večina posebnih znakov niso razširjeni.
  • Dvojni narekovaji: Spremenljivke in določeni posebni znaki v dvojnih narekovajih so razširjeni. Vsebina je predmet zamenjave spremenljivke in zamenjave ukaza.

#!/bin/bash

abcd=Pozdravljeni
echo '$abcd' # Izhod: $abcd
echo $abcd # Izhod: Pozdravljeni

10) Kako lahko uporabite argumente ukazne vrstice v lupinskem skriptu?

Argumenti ukazne vrstice so vrednosti, ki se zagotovijo skriptu, ko se ta izvede. Do njih je mogoče dostopati znotraj skripta z uporabo posebnih spremenljivk, kot so $1, $2 itd., kjer $1 predstavlja prvi argument, $2 predstavlja drugi argument itd.

Na primer: Če ime našega skripta v `example.sh`

#!/bin/bash

echo Ime skripta: $0
echo Prvi argument: $1
echo Drugi argument: $2

Če zaženemo skript z `.example.sh hello_1 hello_2`, bo izpisal:

argumenti cli

argumenti cli

11) Kako uporabljate zanko for za ponavljanje po seznamu vrednosti?

Ustvarite ime skripta `example.sh`.

#!/bin/bash

sadje=(jabolko banana češnjev datum)
za sadje v ${fruits[@]}; narediti
echo Trenutno sadje: $sadje
Končano

Pojasnilo:

Vrstica `fruits=` ustvari matriko z imenom sadje s štirimi elementi: jabolko, banana, češnja in datelj.

  • za sadje v ${fruits[@]}; do: Ta vrstica začne zanko for. Tukaj je, kaj vsak del pomeni:
  • za sadje: To deklarira spremenljivko zanke, imenovano sadje. V vsaki ponovitvi zanke bo fruit vseboval vrednost trenutnega elementa iz matrike fruits.
  • ${fruits[@]}: To je razširitev matrike, ki vzame vse elemente iz matrike fruits. Sintaksa ${…} zagotavlja, da se vsak element obravnava kot ločena postavka.
  • do: Ta ključna beseda označuje začetek telesa zanke.
  • echo Trenutni sad: $fruit: Znotraj zanke ta vrstica uporablja ukaz echo za prikaz trenutne vrednosti spremenljivke zanke fruit. Za vsako sadje v nizu natisne sporočilo, kot je trenutno sadje: jabolko.
  • done: Ta ključna beseda označuje konec telesa zanke. Skriptu sporoči, da se je zanka končala.
za zanko

za zanko

12) Napišite lupinski skript, ki izračuna vsoto celih števil od 1 do N z uporabo zanke.

Ustvarite ime skripta `example.sh`.

#!/bin/bash

echo Vnesite številko (N):
preberi N
vsota=0
for (( i=1; i<=$N; i++ )); narediti
vsota=$((vsota + i))
Končano
echo Vsota celih števil od 1 do $N je: $sum

Pojasnilo:
Skript se začne tako, da vas prosi, da vnesete številko (N) z read. Ta številka bo določila, kolikokrat se bo zanka zagnala.

  1. Spremenljivka sum je inicializirana na 0. Ta spremenljivka bo sledila vsoti celih števil.
  2. Zanka for se začne z for (( i=1; i<=$N; i++ )). Ta struktura zanke se uporablja za ponavljanje niza dejanj določeno število krat, v tem primeru od 1 do vrednosti N.
  3. Znotraj zanke se zgodijo te stvari:
    • i=1 nastavi spremenljivko zanke i na 1 na začetku vsake iteracije.
    • Pogoj zanke i<=$N preveri, ali je i še vedno manjši ali enak danemu številu N.
    • Če je pogoj resničen, se telo zanke izvede.
    • sum=$((sum + i)) izračuna novo vrednost vsote tako, da ji prišteje trenutno vrednost i. To sešteje cela števila od 1 do trenutne vrednosti i.
  4. Po vsaki ponovitvi i++ poveča vrednost i za 1.
  5. Zanka se nadaljuje, dokler pogoj i<=$N ne postane napačen (ko i postane večji od N).
  6. Ko je zanka končana, skript prikaže vsoto celih števil od 1 do vnesenega števila N.

439

13) Ustvarite skript, ki išče določeno besedo v datoteki in šteje njene pojavitve.

Ustvarite ime skripta `word_count.sh`

#!/bin/bash

echo Vnesite besedo za iskanje:
preberi ciljno_besedo
echo Vnesite ime datoteke:
preberi ime datoteke
count=$(grep -o -w $target_word $filename | wc -l)
echo Beseda '$target_word' se pojavi $count-krat v '$filename'.

Pojasnilo:

  • echo Vnesite besedo za iskanje:: Ta vrstica prikaže sporočilo, ki uporabnika prosi, da vnese besedo, ki jo želi iskati v datoteki.
  • read target_word: Ta vrstica prebere vnos uporabnika in ga shrani v spremenljivko z imenom target_word.
  • echo Vnesite ime datoteke:: Ta vrstica prikaže sporočilo, ki uporabnika prosi, da vnese ime datoteke, v kateri želi iskati.
  • preberi ime datoteke: Ta vrstica prebere vnos, ki ga zagotovi uporabnik, in ga shrani v spremenljivko z imenom ime datoteke.
  • count=$(grep -o -w $target_word $filename | wc -l): Ta vrstica opravlja glavno delo skripta. Razčlenimo ga še naprej:
    • grep -o -w $target_word $filename: Ta del ukaza išče pojavitve ciljne_besede v navedenem imenu datoteke. Možnosti -o in -w zagotavljata, da se štejejo samo celotne besede.
    • |: To je cev, ki sprejme izhod prejšnjega ukaza in ga pošlje kot vhod v naslednji ukaz.
    • wc -l: Ta del ukaza uporablja ukaz wc za štetje števila vrstic v vnosu. Možnost -l posebej šteje vrstice.
    • Celoten ukaz izračuna število pojavitev ciljne_besede v datoteki in to število dodeli spremenljivki coun

441

14) Pojasnite razlike med standardnim izhodom (stdout) in standardno napako (stderr).

Glavna razlika med standardnim izhodom (stdout) in standardno napako (stderr) je naslednja:

  • Standardni izhod (stdout): To je privzeti izhodni tok, kamor gre običajni izhod ukaza. Privzeto je prikazan na terminalu. Lahko ga preusmerite v datoteko z>.
  • Standardna napaka (stderr): To je izhodni tok za sporočila o napakah in opozorila. Privzeto je prikazan tudi na terminalu. Lahko ga preusmerite v datoteko z uporabo 2>.

15) Pojasnite koncept pogojnih stavkov v skriptni lupini.

Pogojni stavki v skriptni lupini omogočajo sprejemanje odločitev in nadzor nad potekom našega skripta na podlagi določenih pogojev. Našemu skriptu omogočajo izvajanje različnih nizov ukazov, odvisno od tega, ali je določen pogoj resničen ali napačen. Primarni pogojni stavki v skriptni lupini so stavek if, stavek elif (neobvezno) in stavek else (izbirno).

Tukaj je osnovna struktura pogojnega stavka v skriptni lupini:

če [ pogoj ]; potem
# Ukazi za izvedbo, če je pogoj resničen
elif [ drug_pogoj ]; potem
# Ukazi za izvedbo, če je other_condition resničen (neobvezno)
drugače
# Ukazi za izvedbo, če nobeden od pogojev ni resničen (neobvezno)
biti

Pojasnilo:

  • [pogoj] = Ukaz, ki ovrednoti pogoj in vrne resnično (0) ali napačno (ničelno) izhodno stanje.
  • then = To je ključna beseda, ki nakazuje, da bodo ukazi, ki ji sledijo, izvedeni, če je pogoj ocenjen kot resničen.
  • elif = (okrajšava za else if) To je razdelek, ki nam omogoča, da določimo dodatne pogoje za preverjanje.
  • else = to je razdelek, ki vsebuje ukaze, ki bodo izvedeni, če nobeden od pogojev ni resničen.
  • fi = To je ključna beseda, ki označuje konec pogojnega bloka.

16) Kako berete vrstice iz datoteke znotraj lupinskega skripta?

Za brati vrstice iz datoteke znotraj lupinskega skripta, lahko uporabimo različne metode, vendar je eden od pogostih pristopov uporaba zanke while v kombinaciji z ukazom read. Takole lahko to storimo:

#!/bin/bash
file=/home/jayeshkumar/jayesh.txt
# Preverite, ali datoteka obstaja
if [ -e $file ]; potem
medtem ko IFS= preberi -r vrstico; narediti
echo Branje vrstice: $line
# Tukaj dodajte svojo logiko obdelave
končano <$file
drugače
echo Datoteke ni mogoče najti: $file
biti

Pojasnilo:

  1. #!/bin/bash: To je shebang vrstica, ki določa tolmača (/bin/bash), ki bo uporabljen za izvajanje skripta.
  2. file=/home/jayeshkumar/jayesh.txt: Ta vrstica definira datoteko spremenljivke in dodeli celotno pot do datoteke jayesh.txt v imeniku /home/jayeshkumar. Spremenite to pot, da bo ustrezala dejanski poti datoteke, ki jo želite prebrati.
  3. if [ -e $file ]; potem: Ta vrstica začne stavek if. Preveri, ali datoteka, podana s spremenljivko $file, obstaja. Zastavica -e preverja obstoj datoteke.
  4. medtem ko IFS= preberi -r vrstico; do: Ta vrstica sproži zanko while, ki bere vrstice iz datoteke.
    • IFS=: IFS (notranje ločilo polj) je nastavljeno na prazno vrednost, da ohrani presledke na začetku in na koncu.
    • read -r line: To prebere trenutno vrstico iz datoteke in jo shrani v spremenljivo vrstico.
  5. echo Prebrana vrstica: $line: Ta vrstica natisne vsebino vrstice, ki je bila prebrana iz datoteke. Spremenljivka $line vsebuje vsebino trenutne vrstice.
  6. # Tukaj dodajte svojo logiko obdelave: To je komentar mesta, kjer lahko dodate svojo logiko za obdelavo vsake vrstice. Na primer, lahko analizirate vrstico, izvlečete informacije ali izvedete določena dejanja na podlagi vsebine.
  7. done <$file: To označuje konec zanke while. < $file preusmeri vsebino datoteke, ki jo prebere zanka.
  8. else: Če datoteka ne obstaja (pogoj v stavku if je napačen), skript izvede kodo pod vejo else.
  9. echo Datoteke ni bilo mogoče najti: $file: Ta vrstica natisne sporočilo o napaki, ki nakazuje, da navedena datoteka ni bila najdena.
  10. fi: Ta vrstica označuje konec stavka if.
bralna datoteka

bralna datoteka

Tukaj smo uporabili ` pwd ` ukaz za pridobitev poti trenutnega imenika.

17) V lupinskem skriptu napišite funkcijo, ki izračuna faktorial danega števila.

Tukaj je scenarij, kiizračunaj faktorijeldanega števila.

#!/bin/bash
# Definirajte funkcijo za izračun faktoriala
izračunaj_faktorial() {
num=1$
dejstvo=1
for ((i=1; i<=num; i++)); narediti
dejstvo=$((dejstvo * i))
Končano
echo $fact
}
# Pozove uporabnika, da vnese številko
echo Vnesite številko:
preberi input_num
# Pokličite funkcijo izračun faktorja z vneseno številko
faktorski_rezultat=$(izračunaj_faktorski $input_num)
# Prikaži faktorski rezultat
echo Faktorial $input_num je: $factorial_result

Pojasnilo:

  1. Skript se začne z vrstico shebang #!/bin/bash za podajanje tolmača.
  2. Calculate_factorial() je definiran kot funkcija. Potrebuje en argument, num, ki je število, za katerega je treba izračunati faktorial.
  3. Znotraj funkcije je dejstvo inicializirano na 1. Ta spremenljivka bo shranila faktorski rezultat.
  4. Zanka for ponavlja od 1 do danega števila (num). V vsaki ponovitvi pomnoži trenutno vrednost dejstva z indeksom zanke i.
  5. Ko je zanka končana, spremenljivka dejstva vsebuje izračunani faktorial.
  6. Skript uporabnika pozove, da vnese številko z read.
  7. Funkcija Calculate_factorial se pokliče s številko, ki jo poda uporabnik, rezultat pa se shrani v spremenljivko factorial_result.
  8. Nazadnje skript prikaže izračunani faktorski rezultat.
Faktorial

Faktoriel

18) Kako ravnate s signali, kot je Ctrl+C v lupinskem skriptu?

V lupinskem skriptu lahko z ukazom trap upravljate s signali, kot je Ctrl+C (znan tudi kot SIGINT). Ctrl+C ustvari signal SIGINT, ko ga uporabnik pritisne, da prekine izvajajoči se skript ali program. Z uporabo ukaza trap lahko določite dejanja, ki naj bodo izvedena, ko je prejet določen signal. Tako ravnate s signali, kot je Ctrl+C, v lupinskem skriptu:

#!/bin/bash
pospravi() {
echo Skript prekinjen. Izvajanje čiščenja …
# Tukaj dodajte svoja dejanja čiščenja
izhod 1
}
# Nastavite past za klic funkcije čiščenja, ko prejmete Ctrl+C (SIGINT).
čiščenje pasti SIGINT
# Preostanek vašega scenarija
echo Teče …
spati 10
odmev Končano.

Ravnanje s signali je pomembno za robustnost skriptov in zagotavljanje, da elegantno obravnavajo nepričakovane prekinitve. Funkcijo čiščenja lahko prilagodite svojim posebnim potrebam, na primer zapiranje datotek, zaustavitev procesov ali beleženje podatkov, preden se skript zapre.

Pojasnilo:

  1. #!/bin/bash: Ta vrstica shebang določa tolmača, ki bo uporabljen za izvajanje skripta.
  2. cleanup() { … }: To definira funkcijo z imenom cleanup. Znotraj te funkcije lahko vključite vsa dejanja, ki jih je treba izvesti, ko je skript prekinjen, na primer zapiranje datotek, sprostitev virov ali izvajanje drugih nalog čiščenja.
  3. trap cleanup SIGINT: Ukaz trap se uporablja za nastavitev upravljalnika signalov. V tem primeru določa, da se ob prejemu signala SIGINT (Ctrl+C) izvede funkcija čiščenja.
  4. echo Running…, sleep 10, echo Finished.: To so samo vzorčni ukazi za simulacijo izvajanja skripta.

446

19) Ustvarite skript, ki preveri in odstrani podvojene vrstice v besedilni datoteki.

Tukaj je naš skript za linux, v katerem bomo odstranili podvojene vrstice iz besedilne datoteke.

#!/bin/bash
vhodna_datoteka=vhod.txt
izhodna_datoteka=izhod.txt
razvrsti $input_file | uniq> $output_file
echo Podvojene vrstice so bile uspešno odstranjene.

Pojasnilo:

  1. Skript se začne s shebangom (#!/bin/bash), kar pomeni, da je treba skript interpretirati z lupino Bash.
  2. Spremenljivka input_file je nastavljena na ime vhodne datoteke, ki vsebuje podvojene vrstice (to spremenite v svoje dejansko ime vhodne datoteke).
  3. Spremenljivka output_file je nastavljena na ime izhodne datoteke, kjer bodo odstranjeni dvojniki (to spremenite v želeno ime izhodne datoteke).
  4. Skript uporablja ukaz sort za razvrščanje vrstic v vhodni datoteki. Razvrščanje vrstic zagotavlja, da so podvojene vrstice združene skupaj.
  5. Razvrščene vrstice se nato prenesejo skozi ukaz uniq, ki odstrani zaporedne podvojene vrstice. Izhod tega procesa je preusmerjen v izhodno datoteko.
  6. Ko so dvojniki odstranjeni, skript natisne sporočilo o uspehu.
odstranjevanje podvojenih vrstic

odstranjevanje podvojenih vrstic

Tukaj uporabljamo ` mačka ` za prikaz besedila znotraj besedilne datoteke.

20) Napišite skripto, ki ustvari varno naključno geslo.

Tukaj je naš skript za ustvarjanje varnega naključnega gesla.

#!/bin/bash
# Funkcija za ustvarjanje naključnega gesla
generiraj_geslo() {
tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
}
# Pokličite funkcijo in shranite generirano geslo
geslo=$(generiraj_geslo)
echo Ustvarjeno geslo: $password

Opomba: Uporabnik lahko ustrezno spremeni dolžino gesla, tako da zamenja številko `12`.

Pojasnilo:

  1. Skript se začne s shebangom (#!/bin/bash), kar pomeni, da ga je treba interpretirati z lupino Bash.
  2. Funkcija generate_password je definirana za ustvarjanje naključnega gesla. Takole deluje:
    • tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
    • fold -w 12 razdeli filtrirane naključne podatke v vrstice s širino 12 znakov.
    • head -n 1 izbere prvo vrstico in nam dejansko poda naključno zaporedje znakov dolžine 12.
  3. Spremenljivki gesla je dodeljen rezultat klica funkcije generate_password.
  4. Na koncu se ustvarjeno geslo prikaže z odmevom.

448

21) Napišite lupinski skript, ki izračuna skupno velikost vseh datotek v imeniku.

Tukaj je lupinski skript za izračun skupne velikosti vseh datotek v imeniku.

#!/bin/bash
imenik=/pot/do/vašega/imenika
total_size=$(du -csh $directory | grep total | awk ‘{print $1}’)
echo Skupna velikost datotek v $directory: $total_size

Pojasnilo:

  1. Skript se začne z #!/bin/bash shebang, kar pomeni, da ga je treba interpretirati z lupino Bash.
  2. Spremenljivka imenika je nastavljena na pot imenika, za katerega želite izračunati skupno velikost datoteke. Zamenjajte /path/to/your/directory z dejansko potjo.
  3. Ukaz du se uporablja za oceno porabe prostora za datoteke. Uporabljene možnosti so:
    • -c: Ustvari skupno vsoto.
    • -s: Prikaži samo skupno velikost navedenega imenika.
    • -h: Velikosti tiskanja v človeku berljivem formatu (npr. KB, MB, GB).
  4. Izhod du je posredovan grep total, da filtrira vrstico, ki vsebuje skupno velikost.
  5. awk '{print $1}' se uporablja za ekstrahiranje prvega polja (skupne velikosti) iz vrstice.
  6. Izračunana skupna velikost je shranjena v spremenljivki total_size.
  7. Na koncu skript prikaže skupno velikost z odmevom.
Skupna velikost datotek

Skupna velikost datotek

Tukaj smo uporabili ` pwd ` za ogled trenutne poti imenika.

22) Pojasnite razliko med stavkoma if in elif v skriptni lupini.

Funkcija `if`Staiftement Izjava `elif`
Namen Pojasnite razliko med stavkoma if in elif v skriptni lupini. Zagotavlja alternativne pogoje za preverjanje, kdaj je začetni pogoj if napačen.
uporaba Uporablja se za začetno stanje. Uporablja se za začetnim pogojem if za preverjanje dodatnih pogojev.
število blokov Lahko ima samo en blok if. Lahko ima več blokov elif, vendar samo en blok else (neobvezno).
Izvedba Izvede blok kode, povezan s stavkom if, če je pogoj resničen. Če je pogoj napačen, se izvede blok else (če je prisoten) (izbirno). Preveri vsak pogoj elif po vrstnem redu. Če je en pogoj elif resničen, se izvede ustrezen blok kode in skript zapusti celoten pogojni blok. Če nobeden od pogojev elif ni resničen, se izvede blok else (če je prisoten).
Ugnezdene strukture Lahko se ugnezdi znotraj drugih blokov if, elif ali else. Ni ga mogoče ugnezditi znotraj drugega bloka elif, lahko pa ga uporabite znotraj bloka if ali else.

Razumejmo to s primerom.

#!/bin/bash
število=5
če [$število -gt 10]; potem
echo $število je večje od 10
drugače
echo $število ni večje od 10
biti
odmev ——–
če [$število -gt 10]; potem
echo $število je večje od 10
elif [$število -eq 10]; potem
echo $število je enako 10
drugače
echo $število je manjše od 10
biti

Pojasnilo:

V tem primeru prvi blok if preveri, ali je število večje od 10. Če ni, natisne sporočilo, ki kaže, da število ni večje od 10. Drugi blok s stavki elif zaporedoma preverja več pogojev, dokler eden od njih ni resničen. V tem primeru, ker je vrednost števila 5, bo rezultat:

razlika if_elif

razlika if_elif

23) Kako uporabljate zanko while za ponavljajoče se izvajanje ukazov?

Zanka while se uporablja v skriptni lupini za ponavljajoče se izvajanje niza ukazov, dokler je podani pogoj resničen. Zanka nadaljuje z izvajanjem ukazov, dokler pogoj ne postane false.

Tukaj je osnovna sintaksa zanke while:

medtem ko [pogoj]; narediti
# Ukazi za izvedbo
Končano

Pojasnilo:

  1. Zanka `while` se začne s ključno besedo `while`, ki ji sledi pogoj v oglatih oklepajih `[ ]`.
  2. Telo zanke, ki vsebuje ukaze, ki jih je treba izvesti, je zaprto med ključnima besedama `do` in `done`.
  3. Zanka najprej preveri stanje. Če je pogoj resničen, se izvedejo ukazi v telesu zanke. Ko se telo zanke izvede, se pogoj znova preveri in postopek se ponavlja, dokler pogoj ne postane napačen.

primer: Če želimo natisniti številke od 1 do 5

#!/bin/bash
števec=1
medtem ko [ $counter -le 5 ]; narediti
echo Številka: $števec
števec=$((števec + 1))
Končano

Pojasnilo:

  • Spremenljivka števca je nastavljena na 1.
  • Zanka while preveri, ali je vrednost števca manjša ali enaka 5. Dokler je ta pogoj resničen, se zanka nadaljuje z izvajanjem.
  • Znotraj zanke se trenutna vrednost števca natisne z odmevom.
  • Števec se poveča za 1 z uporabo izraza $((števec + 1)).
medtem ko zanka

medtem ko zanka

24) Ustvarite lupinski skript, ki najde in izpiše vse prazne datoteke v imeniku.

Skript lupine, ki ga lahko uporabite za iskanje in seznam vseh praznih datotek v imeniku z uporabo ukazov `find` in `stat`:

#!/bin/bash
imenik=$1″
if [ -z $imenik ]; potem
echo Uporaba: $0
izhod 1
biti

če [! -d $imenik]; potem
echo Napaka: '$directory' ni veljaven imenik.
izhod 1
biti
echo Prazne datoteke v $directory:
najdi $imenik -tip f -prazen

Pojasnilo:

  1. ` #!/bin/bash `: To se imenuje shebang in operacijskemu sistemu pove, naj uporabi lupino Bash za interpretacijo in izvedbo skripta.
  2. ` imenik=$1″ `: Ta vrstica dodeli prvi argument ukazne vrstice (označen z $1) spremenljivki ` imenik `.
  3. ` if [ -z $imenik ]; potem `: Ta vrstica začne stavek if, ki preveri, ali je ` imenik ` spremenljivka je prazna (-z preveri prazen niz).
  4. ` echo Uporaba: $0 `: Če je imenik prazen, ta vrstica natisne sporočilo o uporabi, kjer je ` 0 $ ` predstavlja ime skripta.
  5. ` izhod 1 `: Ta vrstica zapusti skript z izhodno kodo ` 1 `, ki označuje napako.
  6. ` biti `: Ta vrstica označuje konec ` če ` izjava.
  7. ` če [! -d $imenik]; potem `: To zažene drug stavek if za preverjanje, ali navedeni imenik obstaja (` -d ` preizkusi za imenik).
  8. ` echo Napaka: '$directory' ni veljaven imenik. `: Če navedeni imenik ne obstaja, ta vrstica natisne sporočilo o napaki.
  9. ` izhod 1 `: Zapre skript z izhodno kodo ` 1 `.
  10. ` biti `: Označuje konec drugega ` če` izjava.
  11. ` echo Prazne datoteke v $directory: `: Če je do zdaj vse veljavno, ta vrstica natisne sporočilo, ki nakazuje, da bo skript prikazal prazne datoteke v navedenem imeniku.
  12. ` najdi $imenik -tip f -prazen `: Ta vrstica uporablja ` najti ` ukaz za iskanje praznih datotek (` -prazno `) vrste običajnih datotek (` - tip f `) v podanem imeniku. Nato navede te prazne datoteke.
Iskanje praznih datotek

Iskanje praznih datotek

Opomba : Pri zagonu skripta moramo zagotoviti imenik kot argument. Tukaj smo uporabili pot trenutnega imenika home/jayeshkumar/

25) Kakšen je namen ukaza read v skriptni lupini?

Ukaz za branje v skriptni lupini omogoča, da vas skript vpraša za informacije. To je tako, kot če bi vam računalnik zastavil vprašanje in čakal na vaš odgovor. To je uporabno za skripte, ki zahtevajo, da nekaj vtipkate, ali ko mora skript delati z informacijami iz datotek. Ukaz za branje pomaga skriptu, da se ustavi in ​​počaka na tisto, kar vtipkate, nato pa lahko te podatke uporabi za več stvari v skriptu.

Sintaksa ukaza za branje:

read variable_name>

Primer : Če želimo vzeti ime kot vnos od uporabnika, da ga natisnemo.

#!/bin/bash
echo Prosimo, vnesite svoje ime:
preberi ime
echo Pozdravljeni, $name!

453

preberi nam

Če povzamemo, ukaz za branje se uporablja za zajemanje uporabniškega vnosa ali podatkov iz datotek znotraj lupinskih skriptov, zaradi česar so skripti bolj interaktivni in vsestranski.

26) Napišite lupinski skript, ki pretvori vsa imena datotek v imeniku v male črke.

Tukaj je lupinski skript, ki pretvori vsa imena datotek v imeniku v male črke.

#!/bin/bash
imenik=$1″
if [ -z $imenik ]; potem
echo Uporaba: $0
izhod 1
biti

če [! -d $imenik]; potem

echo Napaka: '$directory' ni veljaven imenik.
izhod 1
biti

cd $imenik || izhod 1

za datoteko v *; narediti
if [ -f $file ]; potem
novo ime=$(echo $file | tr 'A-Z' 'a-z')
[ $file != $newname ] && mv $file $newname
biti
Končano

Pojasnilo:

  1. #!/bin/bash : To je shebang, ki določa, da je treba skript interpretirati z lupino Bash.
  2. imenik=$1″ : Ta vrstica dodeli prvi argument ukazne vrstice imeniku spremenljivk.
  3. if [ -z $imenik ]; potem : Ta vrstica preveri, ali je spremenljivka imenika prazna (pri izvajanju skripta ni podanega argumenta).
  4. echo Uporaba: $0 : Če je imenik prazen, ta vrstica natisne sporočilo o uporabi z imenom skripta ($0).
  5. izhod 1 : Ta vrstica zapusti skript z izhodno kodo 1, kar pomeni, da je prišlo do napake.
  6. f i: To označuje konec prvega stavka if.
  7. če [! -d $imenik]; potem : Ta vrstica preveri, ali navedeni imenik ne obstaja (-d preizkusi imenik).
  8. echo Napaka: '$directory' ni veljaven imenik. : Če navedeni imenik ne obstaja, ta vrstica natisne sporočilo o napaki.
  9. izhod 1 : zapusti skript z izhodno kodo 1.
  10. biti : Označi konec drugega stavka if.
  11. cd $imenik || izhod 1 : spremeni trenutni delovni imenik v podani imenik. Če sprememba imenika ne uspe (npr. imenik ne obstaja), se skript zapre s kodo napake.
  12. za datoteko v *; narediti: jaz za datoteko v *; narediti: začne zanko, ki ponovi vse elemente v trenutnem imeniku (* se ujema z vsemi imeni datotek).
  13. if [ -f $file ]; potem : preveri, ali je trenutni element ponovitve zanke navadna datoteka (-f preizkusi navadno datoteko).
  14. novo ime=$(echo $file | tr 'A-Z' 'a-z') : Pretvori trenutno ime datoteke ($file) v male črke z uporabo ukaza tr in shrani rezultat v spremenljivko newname.
  15. [ $file != $newname ] && mv $file $newname : primerja izvirno ime datoteke z novim imenom datoteke z malimi črkami. Če sta drugačna, datoteko preimenuje z ukazom mv.
  16. biti : Označuje konec notranjega stavka if.
  17. Končano : Označuje konec zanke.

454

Opomba : Pri zagonu skripta moramo zagotoviti imenik kot argument. Tukaj smo uporabili pot trenutnega imenika home/jayeshkumar/test

27) Kako lahko uporabite aritmetične operacije znotraj lupinskega skripta?

Aritmetične operacije je mogoče izvajati znotraj lupinskega skripta z uporabo različnih vgrajenih metod. Lupina ponuja mehanizme za preproste aritmetične izračune z uporabo aritmetične razširitve, kot je:

  1. Aritmetična razširitev ($((…)))
  2. Uporaba ukaza expr
  3. Uporaba ukaza let

Tukaj je naš skript lupine, ki razlaga vse tri metode za aritmetične operacije.

#!/bin/bash
num1=10
num2=5

#Aritmetična razširitev ($((…)))

rezultat=$((num1 + num2))
echo Vsota: $rezultat

#Uporaba ukaza expr

vsota=$(izraz $num1 + $num2)
echo Vsota: $vsota

#Uporaba ukaza let

naj bo vsota = num1 + num2
echo Vsota: $vsota

Pojasnilo:

  1. `#!/bin/bash` : To je shebang, ki določa, da je treba skript tolmačiti z lupino Bash.
  2. `num1=10` in ` num2=5` : Te vrstice dodelijo vrednosti 10 in 5 spremenljivkam ` št.1 ` in ` št.2 ` oziroma.
  3. `#Aritmetična razširitev ($((…)))` : To je komentar, ki označuje začetek odseka, ki prikazuje aritmetično razširitev.
  4. `rezultat=$((num1 + num2))` : Ta vrstica uporablja aritmetično razširitev za izračun vsote ` št.1 ` in ` št.2 ` in shrani rezultat v ` rezultat ` spremenljivka.
  5. `echo Sum: $rezultat` : Ta vrstica natisne izračunano vsoto z uporabo vrednosti, shranjene v ` rezultat ` spremenljivka.
  6. `#Uporaba ukaza expr` : To je komentar, ki označuje začetek razdelka, ki prikazuje uporabo znaka ` ekspr ` ukaz za aritmetične operacije.
  7. `vsota=$(izraz $num1 + $num2)` : Ta vrstica uporablja ` ekspr ` ukaz za izračun vsote ` št.1 ` in ` št.2 ` in shrani rezultat v ` vsota ` spremenljivka. Upoštevajte, da ` ekspr Ukaz ` zahteva presledke okoli operatorjev.
  8. `echo Sum: $sum` : Ta vrstica natisne izračunano vsoto z uporabo vrednosti, shranjene v ` vsota ` spremenljivka.
  9. `#Uporaba ukaza let` : To je komentar, ki označuje začetek razdelka, ki prikazuje uporabo znaka ` pustiti ` ukaz za aritmetične operacije.
  10. `naj vsota = num1 + num2″` : Ta vrstica uporablja ` pustiti ` ukaz za izračun vsote ` št.1 ` in ` št.2 ` in rezultat dodeli ` vsota ` spremenljivka. ` pustiti Ukaz ` ne zahteva presledkov okoli operatorjev.
  11. `echo Sum: $sum` : Ta vrstica natisne izračunano vsoto z uporabo vrednosti, shranjene v ` vsota ` spremenljivka.
aritmetika

aritmetika

28) Ustvarite skript, ki preveri, ali je omrežni gostitelj dosegljiv.

Tukaj je preprost lupinski skript, ki uporablja ukaz ping za preverjanje, ali je omrežni gostitelj dosegljiv:

#!/bin/bash
gostitelj=$1″
če [ -z $gostitelj ]; potem
echo Uporaba: $0
izhod 1
biti
ping -c 4 $gostitelj

če [ $? -eq 0]; potem
echo $host je dosegljiv.
drugače
echo $host ni dosegljiv.
biti

Pojasnilo:

  1. Kot argument vzame ime gostitelja ali naslov IP in preveri, ali je argument naveden.
  2. Če ni podanega nobenega argumenta, prikaže sporočilo o uporabi in se zapre.
  3. Uporablja ukaz ping z možnostjo -c 4 za pošiljanje štirih zahtev za odmev ICMP navedenemu gostitelju.
  4. Ko se zažene ukaz ping, preveri stanje izhoda ($?). Če je status izhoda 0, to pomeni, da je gostitelj dosegljiv in skript natisne sporočilo o uspehu. V nasprotnem primeru natisne sporočilo o napaki.

456

Opomba : Ime gostitelja moramo zagotoviti kot argument pri zagonu skripta. Tukaj smo uporabili google.com

29) Napišite lupinski skript za iskanje največjega elementa v nizu:

Tukaj je lupinski skript za iskanje največjega elementa v nizu.

#!/bin/bash
# Deklarirajte matriko
niz=(3 56 24 89 67)

# Inicializirajte spremenljivko za shranjevanje največje vrednosti, začenši s prvim elementom

max=${matrika[0]}

# Iteracija skozi matriko

za num v ${array[@]}; narediti

# Primerjajte vsak element s trenutnim maksimumom

if ((num> max)); potem
največ=$št
biti
Končano

# Natisnite največjo vrednost

echo Največji element v matriki je: $max

Pojasnilo:

  1. ` #!/bin/bash `: vrstica shebang določa, da je treba skript interpretirati z lupino Bash.
  2. ` niz=(3 56 24 89 67) `: Niz je deklariran in inicializiran z vrednostmi.
  3. ` max=${matrika[0]} `: `max` se inicializira s prvim elementom matrike.
  4. ` za num v ${array[@]}; narediti `: zanka `za` se uporablja za ponavljanje elementov matrike.
  5. ` if ((num> max)); potem `: Stavek `if` preveri, ali je trenutni element `num` večji od trenutnega največjega `max`.
  6. ` max=$num`: če`num ` je večji od `max`, `max` se posodobi z vrednostjo num.
  7. ` Končano `: Zanka `za` je zaprta.
  8. ` echo Največji element v matriki je: $max `: Končno skript natisne največjo vrednost, najdeno v matriki.
461

največje število

30) Napišite skripto za izračun vsote elementov v matriki.

#!/bin/bash

# Deklarirajte matriko

niz=(1 65 22 19 94)

# Inicializirajte spremenljivko za shranjevanje vsote

vsota=0

# Iterirajte skozi matriko in dodajte vsak element k vsoti

za num v ${array[@]}; narediti
am=$((am + am))
Končano

# Izpiši vsoto

echo Vsota elementov v matriki je: $sum

Pojasnilo:

` #!/bin/bash `: vrstica shebang določa, da je treba skript interpretirati z lupino Bash.

` niz=(1 65 22 19 94) `: Niz je deklariran in inicializiran z vrednostmi.

` vsota=0 `:` vsota ` se inicializira na nič, da zadrži vsoto elementov.

` za num v ${array[@]}; narediti `:A` za ` zanka se uporablja za ponavljanje elementov matrike.

` am=$((am + am)) `: Znotraj zanke, vsak element ` na enem ` je dodan v ` vsota ` spremenljivka.

` Končano `: ` za ` zanka je zaprta.

`echo Vsota elementov v matriki je: $sum`: Na koncu skript natisne vsoto vseh elementov v matriki.

462

Vsota elementov

Izvedite več o lupinskih skriptih

Zaključek

Vsi geeki vemo, da je lupinski skript zelo koristen za povečanje delovne produktivnosti in prihranek časa. Torej, v tem članku smo zajeli 30 zelo uporabnih in najbolj prevarantskih primerov lupinskih skriptov . Upamo, da vam bo ta popoln vodnik o primeru lupinskega skripta pomagal razumeti vse o lupinskih skriptih.




izhod 1
biti

če [! -d $imenik]; potem

echo Napaka: '$directory' ni veljaven imenik.
izhod 1
biti

cd $imenik || izhod 1

za datoteko v *; narediti
if [ -f $file ]; potem
novo ime=$(echo $file | tr 'A-Z' 'a-z')
[ $file != $newname ] && mv $file $newname
biti
Končano

Pojasnilo:

  1. #!/bin/bash : To je shebang, ki določa, da je treba skript interpretirati z lupino Bash.
  2. imenik=″ : Ta vrstica dodeli prvi argument ukazne vrstice imeniku spremenljivk.
  3. if [ -z $imenik ]; potem : Ta vrstica preveri, ali je spremenljivka imenika prazna (pri izvajanju skripta ni podanega argumenta).
  4. echo Uporaba:

    Za vse distribucije Linuxa je lupinski skript kot čarobna palica, ki avtomatizira proces, uporabnikom prihrani čas in poveča produktivnost. Ta vadnica za skriptiranje vas bo seznanila s 25 plus primeri skriptiranja.

    Toda preden preidemo na temo lupinsko skriptiranje primeri, razumejmo lupinski skript in dejanske primere uporabe lupinskega skripta.

    Kaj je Shell Script?

    No, lupina je a CLI ( tolmač ukazne vrstice ), ki se izvaja v besedilnem oknu, kjer lahko uporabniki upravljajo in izvajajo ukaze lupine. Po drugi strani pa postopek pisanja nabora ukazov, ki se izvajajo v sistemu Linux. Datoteka, ki vključuje takšna navodila, se imenuje bash skript.

    Uporaba lupinskih skriptov

    Spodaj je nekaj pogostih uporab lupinskega skripta:

    • Avtomatizacija nalog – Uporablja se lahko za avtomatizacijo ponavljajočih se nalog, kot so običajne varnostne kopije in nameščanje programske opreme.
    • Prilagajanje – Uporabite lahko lupinske skripte za oblikovanje okolja ukazne vrstice in enostavno opravljanje svoje naloge glede na potrebe.
    • Upravljanje datotek – Lupinske skripte je mogoče uporabiti tudi za upravljanje in manipulacijo datotek in imenikov, kot so premikanje, kopiranje, preimenovanje ali brisanje datotek.

    Primeri lupinskih skriptov v Linuxu

    1) Kaj označuje znak (#!) na začetku lupinskega skripta?

    The drevo (#!) na začetku skripta označuje tolmača, ki naj se uporabi za izvedbo skripta. Sistemu pove, katera lupina ali tolmač naj interpretira ukaze skripta.

    Na primer: Recimo, da imamo skript z imenom myscript.sh napisano v lupini Bash:

    shebang

    shebang

    V tem primeru:

    • #!/bin/bash na začetku skripta pomeni, da je treba skript interpretirati z lupino Bash.
    • Ukazi echo se uporabljajo za tiskanje sporočil na terminal.

    2) Kako zaženete lupinski skript iz ukazne vrstice?

    Če želite zagnati lupinski skript iz ukazne vrstice, moramo slediti tem korakom:

    • Prepričajte se, da ima skriptna datoteka dovoljenja za izvedljivo uporabo ukaz chmod :
    chmod +x myscript.sh>
    • Izvedite skript z njegovim imenom datoteke:
    ./myscript.sh>

    Tukaj morate zamenjati myscrtipt.sh z imenom vašega skripta.

    3) Napišite lupinski skript, ki natisne techcodeview.com na terminal.

    Ustvarite ime skripta `myscript.sh` (uporabljamo ` Ker ` urejevalnik, izberete lahko poljuben urejevalnik)

    vim myscript.sh>

    #!/bin/bash
    # Ta skript natisne techcodeview.com na terminal
    echo techcodeview.com

    tiskano ime

    tiskano ime

    Naš skript naredimo izvršljiv z uporabo `chmod +x`, nato ga izvedemo z `./myscipt.sh` in dobimo želeni rezultat techcodeview.com.

    4) Pojasnite namen ukaza echo v skriptni lupini.

    The ukaz echo se uporablja za prikaz besedila ali spremenljivk na terminalu. Običajno se uporablja za tiskanje sporočil, vrednosti spremenljivk in generiranje izhodnih podatkov programa.

    434

    ukaz echo

    V tem primeru smo izvedli `echo` na terminalu neposredno, saj deluje enako znotraj skripta lupine.

    5) Kako lahko dodelite vrednost spremenljivki v lupinskem skriptu?

    Spremenljivkam so dodeljene vrednosti z uporabo operatorja dodeljevanja =.

    Na primer:

    #!/bin/bash
    # Dodeljevanje vrednosti spremenljivki
    ime=Jayesh
    starost=21
    echo $name $age

    Pojasnilo:

    • Spremenljivki imena je dodeljena vrednost Jayesh.
    • Spremenljivki starosti je pripisana vrednost 21.
    • echo se uporablja za tiskanje in `$name` `$age` se uporablja za klic vrednosti, shranjene v spremenljivkah.

    435

    6) Napišite lupinski skript, ki kot vhod sprejme uporabniško ime in ga pozdravi.

    Ustvarite ime skripta `example.sh`.

    #!/bin/bash
    # Vprašajte uporabnika za njegovo ime
    echo Kako ti je ime?
    preberi ime
    # Pozdravite uporabnika
    echo Pozdravljeni, $name! Lepo te je bilo srečati.

    Pojasnilo:

    • #!/bin/bash: To je shebang linija. Sistemu pove, naj za izvedbo skripta uporabi tolmač Bash.
    • # Vprašajte uporabnika za njegovo ime: To je komentar. Zagotavlja kontekst o prihajajoči kodi. Tolmač ignorira komentarje.
    • echo Kako ti je ime?: Ukaz echo se uporablja za prikaz besedila v dvojnih narekovajih na terminalu.
    • preberi ime: Ukaz za branje počaka, da uporabnik vnese besedilo, in ga shrani v ime spremenljivke.
    • echo Pozdravljeni, $name! Veseli me.: Ta vrstica uporablja ukaz echo za tiskanje pozdravnega sporočila, ki vključuje vrednost spremenljivke imena, ki je bila zbrana iz uporabnikovega vnosa.

    436

    7) Kako dodate komentarje lupinskemu skriptu?

    Komentarji v skriptni lupini se uporabljajo za zagotavljanje razlag ali konteksta kode. Tolmač jih ignorira in so namenjene samo ljudem, ki berejo scenarij. Komentarje lahko dodate s simbolom #.

    #!/bin/bash
    # To je komentar, ki pojasnjuje namen skripta
    odmev gfg

    8) Ustvarite lupinski skript, ki preveri, ali datoteka obstaja v trenutnem imeniku.

    Tukaj je skript, ki preveri, ali datoteka z imenom example.txt obstaja v trenutnem imeniku:

    #!/bin/bash
    datoteka=primer.txt
    # Preverite, ali datoteka obstaja
    if [ -e $file ]; potem
    echo Datoteka obstaja: $file
    drugače
    echo Datoteke ni mogoče najti: $file
    biti

    Pojasnilo:

    1. #!/bin/bash: To je shebang vrstica, ki določa tolmača (/bin/bash), ki bo uporabljen za izvajanje skripta.
    2. file=example.txt: Ta vrstica definira datoteko spremenljivke in ji dodeli vrednost example.txt. To lahko zamenjate z imenom datoteke, ki jo želite preveriti.
    3. if [ -e $file ]; potem: Ta vrstica začne stavek if. Pogoj [ -e $datoteka ] preveri, ali datoteka, določena z vrednostjo spremenljivke datoteke, obstaja. Zastavica -e se uporablja za preverjanje obstoja datoteke.
    4. echo Datoteka obstaja: $file: Če je pogoj resničen (tj. datoteka obstaja), ta vrstica natisne sporočilo, ki označuje, da datoteka obstaja, skupaj z imenom datoteke.
    5. else: Če je pogoj napačen (tj. datoteka ne obstaja), skript izvede kodo pod vejo else.
    6. echo Datoteke ni bilo mogoče najti: $file: Ta vrstica natisne sporočilo o napaki, ki označuje, da navedena datoteka ni bila najdena, skupaj z imenom datoteke.
    7. fi: Ta vrstica označuje konec stavka if.
    Iskanje datoteke

    Iskanje datoteke

    9) Kakšna je razlika med enojnimi narekovaji (‘) in dvojnimi narekovaji () v skriptni lupini?

    Enojni narekovaji (‘) in dvojni narekovaji () se uporabljajo za zapiranje nizov v skriptno lupino, vendar se obnašajo različno:

    • Enojni narekovaji: vse med enojnimi narekovaji se obravnava kot dobesedni niz. Imena spremenljivk in večina posebnih znakov niso razširjeni.
    • Dvojni narekovaji: Spremenljivke in določeni posebni znaki v dvojnih narekovajih so razširjeni. Vsebina je predmet zamenjave spremenljivke in zamenjave ukaza.

    #!/bin/bash

    abcd=Pozdravljeni
    echo '$abcd' # Izhod: $abcd
    echo $abcd # Izhod: Pozdravljeni

    10) Kako lahko uporabite argumente ukazne vrstice v lupinskem skriptu?

    Argumenti ukazne vrstice so vrednosti, ki se zagotovijo skriptu, ko se ta izvede. Do njih je mogoče dostopati znotraj skripta z uporabo posebnih spremenljivk, kot so $1, $2 itd., kjer $1 predstavlja prvi argument, $2 predstavlja drugi argument itd.

    Na primer: Če ime našega skripta v `example.sh`

    #!/bin/bash

    echo Ime skripta: $0
    echo Prvi argument: $1
    echo Drugi argument: $2

    Če zaženemo skript z `.example.sh hello_1 hello_2`, bo izpisal:

    argumenti cli

    argumenti cli

    11) Kako uporabljate zanko for za ponavljanje po seznamu vrednosti?

    Ustvarite ime skripta `example.sh`.

    #!/bin/bash

    sadje=(jabolko banana češnjev datum)
    za sadje v ${fruits[@]}; narediti
    echo Trenutno sadje: $sadje
    Končano

    Pojasnilo:

    Vrstica `fruits=` ustvari matriko z imenom sadje s štirimi elementi: jabolko, banana, češnja in datelj.

    • za sadje v ${fruits[@]}; do: Ta vrstica začne zanko for. Tukaj je, kaj vsak del pomeni:
    • za sadje: To deklarira spremenljivko zanke, imenovano sadje. V vsaki ponovitvi zanke bo fruit vseboval vrednost trenutnega elementa iz matrike fruits.
    • ${fruits[@]}: To je razširitev matrike, ki vzame vse elemente iz matrike fruits. Sintaksa ${…} zagotavlja, da se vsak element obravnava kot ločena postavka.
    • do: Ta ključna beseda označuje začetek telesa zanke.
    • echo Trenutni sad: $fruit: Znotraj zanke ta vrstica uporablja ukaz echo za prikaz trenutne vrednosti spremenljivke zanke fruit. Za vsako sadje v nizu natisne sporočilo, kot je trenutno sadje: jabolko.
    • done: Ta ključna beseda označuje konec telesa zanke. Skriptu sporoči, da se je zanka končala.
    za zanko

    za zanko

    12) Napišite lupinski skript, ki izračuna vsoto celih števil od 1 do N z uporabo zanke.

    Ustvarite ime skripta `example.sh`.

    #!/bin/bash

    echo Vnesite številko (N):
    preberi N
    vsota=0
    for (( i=1; i<=$N; i++ )); narediti
    vsota=$((vsota + i))
    Končano
    echo Vsota celih števil od 1 do $N je: $sum

    Pojasnilo:
    Skript se začne tako, da vas prosi, da vnesete številko (N) z read. Ta številka bo določila, kolikokrat se bo zanka zagnala.

    1. Spremenljivka sum je inicializirana na 0. Ta spremenljivka bo sledila vsoti celih števil.
    2. Zanka for se začne z for (( i=1; i<=$N; i++ )). Ta struktura zanke se uporablja za ponavljanje niza dejanj določeno število krat, v tem primeru od 1 do vrednosti N.
    3. Znotraj zanke se zgodijo te stvari:
      • i=1 nastavi spremenljivko zanke i na 1 na začetku vsake iteracije.
      • Pogoj zanke i<=$N preveri, ali je i še vedno manjši ali enak danemu številu N.
      • Če je pogoj resničen, se telo zanke izvede.
      • sum=$((sum + i)) izračuna novo vrednost vsote tako, da ji prišteje trenutno vrednost i. To sešteje cela števila od 1 do trenutne vrednosti i.
    4. Po vsaki ponovitvi i++ poveča vrednost i za 1.
    5. Zanka se nadaljuje, dokler pogoj i<=$N ne postane napačen (ko i postane večji od N).
    6. Ko je zanka končana, skript prikaže vsoto celih števil od 1 do vnesenega števila N.

    439

    13) Ustvarite skript, ki išče določeno besedo v datoteki in šteje njene pojavitve.

    Ustvarite ime skripta `word_count.sh`

    #!/bin/bash

    echo Vnesite besedo za iskanje:
    preberi ciljno_besedo
    echo Vnesite ime datoteke:
    preberi ime datoteke
    count=$(grep -o -w $target_word $filename | wc -l)
    echo Beseda '$target_word' se pojavi $count-krat v '$filename'.

    Pojasnilo:

    • echo Vnesite besedo za iskanje:: Ta vrstica prikaže sporočilo, ki uporabnika prosi, da vnese besedo, ki jo želi iskati v datoteki.
    • read target_word: Ta vrstica prebere vnos uporabnika in ga shrani v spremenljivko z imenom target_word.
    • echo Vnesite ime datoteke:: Ta vrstica prikaže sporočilo, ki uporabnika prosi, da vnese ime datoteke, v kateri želi iskati.
    • preberi ime datoteke: Ta vrstica prebere vnos, ki ga zagotovi uporabnik, in ga shrani v spremenljivko z imenom ime datoteke.
    • count=$(grep -o -w $target_word $filename | wc -l): Ta vrstica opravlja glavno delo skripta. Razčlenimo ga še naprej:
      • grep -o -w $target_word $filename: Ta del ukaza išče pojavitve ciljne_besede v navedenem imenu datoteke. Možnosti -o in -w zagotavljata, da se štejejo samo celotne besede.
      • |: To je cev, ki sprejme izhod prejšnjega ukaza in ga pošlje kot vhod v naslednji ukaz.
      • wc -l: Ta del ukaza uporablja ukaz wc za štetje števila vrstic v vnosu. Možnost -l posebej šteje vrstice.
      • Celoten ukaz izračuna število pojavitev ciljne_besede v datoteki in to število dodeli spremenljivki coun

    441

    14) Pojasnite razlike med standardnim izhodom (stdout) in standardno napako (stderr).

    Glavna razlika med standardnim izhodom (stdout) in standardno napako (stderr) je naslednja:

    • Standardni izhod (stdout): To je privzeti izhodni tok, kamor gre običajni izhod ukaza. Privzeto je prikazan na terminalu. Lahko ga preusmerite v datoteko z>.
    • Standardna napaka (stderr): To je izhodni tok za sporočila o napakah in opozorila. Privzeto je prikazan tudi na terminalu. Lahko ga preusmerite v datoteko z uporabo 2>.

    15) Pojasnite koncept pogojnih stavkov v skriptni lupini.

    Pogojni stavki v skriptni lupini omogočajo sprejemanje odločitev in nadzor nad potekom našega skripta na podlagi določenih pogojev. Našemu skriptu omogočajo izvajanje različnih nizov ukazov, odvisno od tega, ali je določen pogoj resničen ali napačen. Primarni pogojni stavki v skriptni lupini so stavek if, stavek elif (neobvezno) in stavek else (izbirno).

    Tukaj je osnovna struktura pogojnega stavka v skriptni lupini:

    če [ pogoj ]; potem
    # Ukazi za izvedbo, če je pogoj resničen
    elif [ drug_pogoj ]; potem
    # Ukazi za izvedbo, če je other_condition resničen (neobvezno)
    drugače
    # Ukazi za izvedbo, če nobeden od pogojev ni resničen (neobvezno)
    biti

    Pojasnilo:

    • [pogoj] = Ukaz, ki ovrednoti pogoj in vrne resnično (0) ali napačno (ničelno) izhodno stanje.
    • then = To je ključna beseda, ki nakazuje, da bodo ukazi, ki ji sledijo, izvedeni, če je pogoj ocenjen kot resničen.
    • elif = (okrajšava za else if) To je razdelek, ki nam omogoča, da določimo dodatne pogoje za preverjanje.
    • else = to je razdelek, ki vsebuje ukaze, ki bodo izvedeni, če nobeden od pogojev ni resničen.
    • fi = To je ključna beseda, ki označuje konec pogojnega bloka.

    16) Kako berete vrstice iz datoteke znotraj lupinskega skripta?

    Za brati vrstice iz datoteke znotraj lupinskega skripta, lahko uporabimo različne metode, vendar je eden od pogostih pristopov uporaba zanke while v kombinaciji z ukazom read. Takole lahko to storimo:

    #!/bin/bash
    file=/home/jayeshkumar/jayesh.txt
    # Preverite, ali datoteka obstaja
    if [ -e $file ]; potem
    medtem ko IFS= preberi -r vrstico; narediti
    echo Branje vrstice: $line
    # Tukaj dodajte svojo logiko obdelave
    končano <$file
    drugače
    echo Datoteke ni mogoče najti: $file
    biti

    Pojasnilo:

    1. #!/bin/bash: To je shebang vrstica, ki določa tolmača (/bin/bash), ki bo uporabljen za izvajanje skripta.
    2. file=/home/jayeshkumar/jayesh.txt: Ta vrstica definira datoteko spremenljivke in dodeli celotno pot do datoteke jayesh.txt v imeniku /home/jayeshkumar. Spremenite to pot, da bo ustrezala dejanski poti datoteke, ki jo želite prebrati.
    3. if [ -e $file ]; potem: Ta vrstica začne stavek if. Preveri, ali datoteka, podana s spremenljivko $file, obstaja. Zastavica -e preverja obstoj datoteke.
    4. medtem ko IFS= preberi -r vrstico; do: Ta vrstica sproži zanko while, ki bere vrstice iz datoteke.
      • IFS=: IFS (notranje ločilo polj) je nastavljeno na prazno vrednost, da ohrani presledke na začetku in na koncu.
      • read -r line: To prebere trenutno vrstico iz datoteke in jo shrani v spremenljivo vrstico.
    5. echo Prebrana vrstica: $line: Ta vrstica natisne vsebino vrstice, ki je bila prebrana iz datoteke. Spremenljivka $line vsebuje vsebino trenutne vrstice.
    6. # Tukaj dodajte svojo logiko obdelave: To je komentar mesta, kjer lahko dodate svojo logiko za obdelavo vsake vrstice. Na primer, lahko analizirate vrstico, izvlečete informacije ali izvedete določena dejanja na podlagi vsebine.
    7. done <$file: To označuje konec zanke while. < $file preusmeri vsebino datoteke, ki jo prebere zanka.
    8. else: Če datoteka ne obstaja (pogoj v stavku if je napačen), skript izvede kodo pod vejo else.
    9. echo Datoteke ni bilo mogoče najti: $file: Ta vrstica natisne sporočilo o napaki, ki nakazuje, da navedena datoteka ni bila najdena.
    10. fi: Ta vrstica označuje konec stavka if.
    bralna datoteka

    bralna datoteka

    Tukaj smo uporabili ` pwd ` ukaz za pridobitev poti trenutnega imenika.

    17) V lupinskem skriptu napišite funkcijo, ki izračuna faktorial danega števila.

    Tukaj je scenarij, kiizračunaj faktorijeldanega števila.

    #!/bin/bash
    # Definirajte funkcijo za izračun faktoriala
    izračunaj_faktorial() {
    num=1$
    dejstvo=1
    for ((i=1; i<=num; i++)); narediti
    dejstvo=$((dejstvo * i))
    Končano
    echo $fact
    }
    # Pozove uporabnika, da vnese številko
    echo Vnesite številko:
    preberi input_num
    # Pokličite funkcijo izračun faktorja z vneseno številko
    faktorski_rezultat=$(izračunaj_faktorski $input_num)
    # Prikaži faktorski rezultat
    echo Faktorial $input_num je: $factorial_result

    Pojasnilo:

    1. Skript se začne z vrstico shebang #!/bin/bash za podajanje tolmača.
    2. Calculate_factorial() je definiran kot funkcija. Potrebuje en argument, num, ki je število, za katerega je treba izračunati faktorial.
    3. Znotraj funkcije je dejstvo inicializirano na 1. Ta spremenljivka bo shranila faktorski rezultat.
    4. Zanka for ponavlja od 1 do danega števila (num). V vsaki ponovitvi pomnoži trenutno vrednost dejstva z indeksom zanke i.
    5. Ko je zanka končana, spremenljivka dejstva vsebuje izračunani faktorial.
    6. Skript uporabnika pozove, da vnese številko z read.
    7. Funkcija Calculate_factorial se pokliče s številko, ki jo poda uporabnik, rezultat pa se shrani v spremenljivko factorial_result.
    8. Nazadnje skript prikaže izračunani faktorski rezultat.
    Faktorial

    Faktoriel

    18) Kako ravnate s signali, kot je Ctrl+C v lupinskem skriptu?

    V lupinskem skriptu lahko z ukazom trap upravljate s signali, kot je Ctrl+C (znan tudi kot SIGINT). Ctrl+C ustvari signal SIGINT, ko ga uporabnik pritisne, da prekine izvajajoči se skript ali program. Z uporabo ukaza trap lahko določite dejanja, ki naj bodo izvedena, ko je prejet določen signal. Tako ravnate s signali, kot je Ctrl+C, v lupinskem skriptu:

    #!/bin/bash
    pospravi() {
    echo Skript prekinjen. Izvajanje čiščenja …
    # Tukaj dodajte svoja dejanja čiščenja
    izhod 1
    }
    # Nastavite past za klic funkcije čiščenja, ko prejmete Ctrl+C (SIGINT).
    čiščenje pasti SIGINT
    # Preostanek vašega scenarija
    echo Teče …
    spati 10
    odmev Končano.

    Ravnanje s signali je pomembno za robustnost skriptov in zagotavljanje, da elegantno obravnavajo nepričakovane prekinitve. Funkcijo čiščenja lahko prilagodite svojim posebnim potrebam, na primer zapiranje datotek, zaustavitev procesov ali beleženje podatkov, preden se skript zapre.

    Pojasnilo:

    1. #!/bin/bash: Ta vrstica shebang določa tolmača, ki bo uporabljen za izvajanje skripta.
    2. cleanup() { … }: To definira funkcijo z imenom cleanup. Znotraj te funkcije lahko vključite vsa dejanja, ki jih je treba izvesti, ko je skript prekinjen, na primer zapiranje datotek, sprostitev virov ali izvajanje drugih nalog čiščenja.
    3. trap cleanup SIGINT: Ukaz trap se uporablja za nastavitev upravljalnika signalov. V tem primeru določa, da se ob prejemu signala SIGINT (Ctrl+C) izvede funkcija čiščenja.
    4. echo Running…, sleep 10, echo Finished.: To so samo vzorčni ukazi za simulacijo izvajanja skripta.

    446

    19) Ustvarite skript, ki preveri in odstrani podvojene vrstice v besedilni datoteki.

    Tukaj je naš skript za linux, v katerem bomo odstranili podvojene vrstice iz besedilne datoteke.

    #!/bin/bash
    vhodna_datoteka=vhod.txt
    izhodna_datoteka=izhod.txt
    razvrsti $input_file | uniq> $output_file
    echo Podvojene vrstice so bile uspešno odstranjene.

    Pojasnilo:

    1. Skript se začne s shebangom (#!/bin/bash), kar pomeni, da je treba skript interpretirati z lupino Bash.
    2. Spremenljivka input_file je nastavljena na ime vhodne datoteke, ki vsebuje podvojene vrstice (to spremenite v svoje dejansko ime vhodne datoteke).
    3. Spremenljivka output_file je nastavljena na ime izhodne datoteke, kjer bodo odstranjeni dvojniki (to spremenite v želeno ime izhodne datoteke).
    4. Skript uporablja ukaz sort za razvrščanje vrstic v vhodni datoteki. Razvrščanje vrstic zagotavlja, da so podvojene vrstice združene skupaj.
    5. Razvrščene vrstice se nato prenesejo skozi ukaz uniq, ki odstrani zaporedne podvojene vrstice. Izhod tega procesa je preusmerjen v izhodno datoteko.
    6. Ko so dvojniki odstranjeni, skript natisne sporočilo o uspehu.
    odstranjevanje podvojenih vrstic

    odstranjevanje podvojenih vrstic

    Tukaj uporabljamo ` mačka ` za prikaz besedila znotraj besedilne datoteke.

    20) Napišite skripto, ki ustvari varno naključno geslo.

    Tukaj je naš skript za ustvarjanje varnega naključnega gesla.

    #!/bin/bash
    # Funkcija za ustvarjanje naključnega gesla
    generiraj_geslo() {
    tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
    }
    # Pokličite funkcijo in shranite generirano geslo
    geslo=$(generiraj_geslo)
    echo Ustvarjeno geslo: $password

    Opomba: Uporabnik lahko ustrezno spremeni dolžino gesla, tako da zamenja številko `12`.

    Pojasnilo:

    1. Skript se začne s shebangom (#!/bin/bash), kar pomeni, da ga je treba interpretirati z lupino Bash.
    2. Funkcija generate_password je definirana za ustvarjanje naključnega gesla. Takole deluje:
      • tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
      • fold -w 12 razdeli filtrirane naključne podatke v vrstice s širino 12 znakov.
      • head -n 1 izbere prvo vrstico in nam dejansko poda naključno zaporedje znakov dolžine 12.
    3. Spremenljivki gesla je dodeljen rezultat klica funkcije generate_password.
    4. Na koncu se ustvarjeno geslo prikaže z odmevom.

    448

    21) Napišite lupinski skript, ki izračuna skupno velikost vseh datotek v imeniku.

    Tukaj je lupinski skript za izračun skupne velikosti vseh datotek v imeniku.

    #!/bin/bash
    imenik=/pot/do/vašega/imenika
    total_size=$(du -csh $directory | grep total | awk ‘{print $1}’)
    echo Skupna velikost datotek v $directory: $total_size

    Pojasnilo:

    1. Skript se začne z #!/bin/bash shebang, kar pomeni, da ga je treba interpretirati z lupino Bash.
    2. Spremenljivka imenika je nastavljena na pot imenika, za katerega želite izračunati skupno velikost datoteke. Zamenjajte /path/to/your/directory z dejansko potjo.
    3. Ukaz du se uporablja za oceno porabe prostora za datoteke. Uporabljene možnosti so:
      • -c: Ustvari skupno vsoto.
      • -s: Prikaži samo skupno velikost navedenega imenika.
      • -h: Velikosti tiskanja v človeku berljivem formatu (npr. KB, MB, GB).
    4. Izhod du je posredovan grep total, da filtrira vrstico, ki vsebuje skupno velikost.
    5. awk '{print $1}' se uporablja za ekstrahiranje prvega polja (skupne velikosti) iz vrstice.
    6. Izračunana skupna velikost je shranjena v spremenljivki total_size.
    7. Na koncu skript prikaže skupno velikost z odmevom.
    Skupna velikost datotek

    Skupna velikost datotek

    Tukaj smo uporabili ` pwd ` za ogled trenutne poti imenika.

    22) Pojasnite razliko med stavkoma if in elif v skriptni lupini.

    Funkcija `if`Staiftement Izjava `elif`
    Namen Pojasnite razliko med stavkoma if in elif v skriptni lupini. Zagotavlja alternativne pogoje za preverjanje, kdaj je začetni pogoj if napačen.
    uporaba Uporablja se za začetno stanje. Uporablja se za začetnim pogojem if za preverjanje dodatnih pogojev.
    število blokov Lahko ima samo en blok if. Lahko ima več blokov elif, vendar samo en blok else (neobvezno).
    Izvedba Izvede blok kode, povezan s stavkom if, če je pogoj resničen. Če je pogoj napačen, se izvede blok else (če je prisoten) (izbirno). Preveri vsak pogoj elif po vrstnem redu. Če je en pogoj elif resničen, se izvede ustrezen blok kode in skript zapusti celoten pogojni blok. Če nobeden od pogojev elif ni resničen, se izvede blok else (če je prisoten).
    Ugnezdene strukture Lahko se ugnezdi znotraj drugih blokov if, elif ali else. Ni ga mogoče ugnezditi znotraj drugega bloka elif, lahko pa ga uporabite znotraj bloka if ali else.

    Razumejmo to s primerom.

    #!/bin/bash
    število=5
    če [$število -gt 10]; potem
    echo $število je večje od 10
    drugače
    echo $število ni večje od 10
    biti
    odmev ——–
    če [$število -gt 10]; potem
    echo $število je večje od 10
    elif [$število -eq 10]; potem
    echo $število je enako 10
    drugače
    echo $število je manjše od 10
    biti

    Pojasnilo:

    V tem primeru prvi blok if preveri, ali je število večje od 10. Če ni, natisne sporočilo, ki kaže, da število ni večje od 10. Drugi blok s stavki elif zaporedoma preverja več pogojev, dokler eden od njih ni resničen. V tem primeru, ker je vrednost števila 5, bo rezultat:

    razlika if_elif

    razlika if_elif

    23) Kako uporabljate zanko while za ponavljajoče se izvajanje ukazov?

    Zanka while se uporablja v skriptni lupini za ponavljajoče se izvajanje niza ukazov, dokler je podani pogoj resničen. Zanka nadaljuje z izvajanjem ukazov, dokler pogoj ne postane false.

    Tukaj je osnovna sintaksa zanke while:

    medtem ko [pogoj]; narediti
    # Ukazi za izvedbo
    Končano

    Pojasnilo:

    1. Zanka `while` se začne s ključno besedo `while`, ki ji sledi pogoj v oglatih oklepajih `[ ]`.
    2. Telo zanke, ki vsebuje ukaze, ki jih je treba izvesti, je zaprto med ključnima besedama `do` in `done`.
    3. Zanka najprej preveri stanje. Če je pogoj resničen, se izvedejo ukazi v telesu zanke. Ko se telo zanke izvede, se pogoj znova preveri in postopek se ponavlja, dokler pogoj ne postane napačen.

    primer: Če želimo natisniti številke od 1 do 5

    #!/bin/bash
    števec=1
    medtem ko [ $counter -le 5 ]; narediti
    echo Številka: $števec
    števec=$((števec + 1))
    Končano

    Pojasnilo:

    • Spremenljivka števca je nastavljena na 1.
    • Zanka while preveri, ali je vrednost števca manjša ali enaka 5. Dokler je ta pogoj resničen, se zanka nadaljuje z izvajanjem.
    • Znotraj zanke se trenutna vrednost števca natisne z odmevom.
    • Števec se poveča za 1 z uporabo izraza $((števec + 1)).
    medtem ko zanka

    medtem ko zanka

    24) Ustvarite lupinski skript, ki najde in izpiše vse prazne datoteke v imeniku.

    Skript lupine, ki ga lahko uporabite za iskanje in seznam vseh praznih datotek v imeniku z uporabo ukazov `find` in `stat`:

    #!/bin/bash
    imenik=$1″
    if [ -z $imenik ]; potem
    echo Uporaba: $0
    izhod 1
    biti

    če [! -d $imenik]; potem
    echo Napaka: '$directory' ni veljaven imenik.
    izhod 1
    biti
    echo Prazne datoteke v $directory:
    najdi $imenik -tip f -prazen

    Pojasnilo:

    1. ` #!/bin/bash `: To se imenuje shebang in operacijskemu sistemu pove, naj uporabi lupino Bash za interpretacijo in izvedbo skripta.
    2. ` imenik=$1″ `: Ta vrstica dodeli prvi argument ukazne vrstice (označen z $1) spremenljivki ` imenik `.
    3. ` if [ -z $imenik ]; potem `: Ta vrstica začne stavek if, ki preveri, ali je ` imenik ` spremenljivka je prazna (-z preveri prazen niz).
    4. ` echo Uporaba: $0 `: Če je imenik prazen, ta vrstica natisne sporočilo o uporabi, kjer je ` 0 $ ` predstavlja ime skripta.
    5. ` izhod 1 `: Ta vrstica zapusti skript z izhodno kodo ` 1 `, ki označuje napako.
    6. ` biti `: Ta vrstica označuje konec ` če ` izjava.
    7. ` če [! -d $imenik]; potem `: To zažene drug stavek if za preverjanje, ali navedeni imenik obstaja (` -d ` preizkusi za imenik).
    8. ` echo Napaka: '$directory' ni veljaven imenik. `: Če navedeni imenik ne obstaja, ta vrstica natisne sporočilo o napaki.
    9. ` izhod 1 `: Zapre skript z izhodno kodo ` 1 `.
    10. ` biti `: Označuje konec drugega ` če` izjava.
    11. ` echo Prazne datoteke v $directory: `: Če je do zdaj vse veljavno, ta vrstica natisne sporočilo, ki nakazuje, da bo skript prikazal prazne datoteke v navedenem imeniku.
    12. ` najdi $imenik -tip f -prazen `: Ta vrstica uporablja ` najti ` ukaz za iskanje praznih datotek (` -prazno `) vrste običajnih datotek (` - tip f `) v podanem imeniku. Nato navede te prazne datoteke.
    Iskanje praznih datotek

    Iskanje praznih datotek

    Opomba : Pri zagonu skripta moramo zagotoviti imenik kot argument. Tukaj smo uporabili pot trenutnega imenika home/jayeshkumar/

    25) Kakšen je namen ukaza read v skriptni lupini?

    Ukaz za branje v skriptni lupini omogoča, da vas skript vpraša za informacije. To je tako, kot če bi vam računalnik zastavil vprašanje in čakal na vaš odgovor. To je uporabno za skripte, ki zahtevajo, da nekaj vtipkate, ali ko mora skript delati z informacijami iz datotek. Ukaz za branje pomaga skriptu, da se ustavi in ​​počaka na tisto, kar vtipkate, nato pa lahko te podatke uporabi za več stvari v skriptu.

    Sintaksa ukaza za branje:

    read variable_name>

    Primer : Če želimo vzeti ime kot vnos od uporabnika, da ga natisnemo.

    #!/bin/bash
    echo Prosimo, vnesite svoje ime:
    preberi ime
    echo Pozdravljeni, $name!

    453

    preberi nam

    Če povzamemo, ukaz za branje se uporablja za zajemanje uporabniškega vnosa ali podatkov iz datotek znotraj lupinskih skriptov, zaradi česar so skripti bolj interaktivni in vsestranski.

    26) Napišite lupinski skript, ki pretvori vsa imena datotek v imeniku v male črke.

    Tukaj je lupinski skript, ki pretvori vsa imena datotek v imeniku v male črke.

    #!/bin/bash
    imenik=$1″
    if [ -z $imenik ]; potem
    echo Uporaba: $0
    izhod 1
    biti

    če [! -d $imenik]; potem

    echo Napaka: '$directory' ni veljaven imenik.
    izhod 1
    biti

    cd $imenik || izhod 1

    za datoteko v *; narediti
    if [ -f $file ]; potem
    novo ime=$(echo $file | tr 'A-Z' 'a-z')
    [ $file != $newname ] && mv $file $newname
    biti
    Končano

    Pojasnilo:

    1. #!/bin/bash : To je shebang, ki določa, da je treba skript interpretirati z lupino Bash.
    2. imenik=$1″ : Ta vrstica dodeli prvi argument ukazne vrstice imeniku spremenljivk.
    3. if [ -z $imenik ]; potem : Ta vrstica preveri, ali je spremenljivka imenika prazna (pri izvajanju skripta ni podanega argumenta).
    4. echo Uporaba: $0 : Če je imenik prazen, ta vrstica natisne sporočilo o uporabi z imenom skripta ($0).
    5. izhod 1 : Ta vrstica zapusti skript z izhodno kodo 1, kar pomeni, da je prišlo do napake.
    6. f i: To označuje konec prvega stavka if.
    7. če [! -d $imenik]; potem : Ta vrstica preveri, ali navedeni imenik ne obstaja (-d preizkusi imenik).
    8. echo Napaka: '$directory' ni veljaven imenik. : Če navedeni imenik ne obstaja, ta vrstica natisne sporočilo o napaki.
    9. izhod 1 : zapusti skript z izhodno kodo 1.
    10. biti : Označi konec drugega stavka if.
    11. cd $imenik || izhod 1 : spremeni trenutni delovni imenik v podani imenik. Če sprememba imenika ne uspe (npr. imenik ne obstaja), se skript zapre s kodo napake.
    12. za datoteko v *; narediti: jaz za datoteko v *; narediti: začne zanko, ki ponovi vse elemente v trenutnem imeniku (* se ujema z vsemi imeni datotek).
    13. if [ -f $file ]; potem : preveri, ali je trenutni element ponovitve zanke navadna datoteka (-f preizkusi navadno datoteko).
    14. novo ime=$(echo $file | tr 'A-Z' 'a-z') : Pretvori trenutno ime datoteke ($file) v male črke z uporabo ukaza tr in shrani rezultat v spremenljivko newname.
    15. [ $file != $newname ] && mv $file $newname : primerja izvirno ime datoteke z novim imenom datoteke z malimi črkami. Če sta drugačna, datoteko preimenuje z ukazom mv.
    16. biti : Označuje konec notranjega stavka if.
    17. Končano : Označuje konec zanke.

    454

    Opomba : Pri zagonu skripta moramo zagotoviti imenik kot argument. Tukaj smo uporabili pot trenutnega imenika home/jayeshkumar/test

    27) Kako lahko uporabite aritmetične operacije znotraj lupinskega skripta?

    Aritmetične operacije je mogoče izvajati znotraj lupinskega skripta z uporabo različnih vgrajenih metod. Lupina ponuja mehanizme za preproste aritmetične izračune z uporabo aritmetične razširitve, kot je:

    1. Aritmetična razširitev ($((…)))
    2. Uporaba ukaza expr
    3. Uporaba ukaza let

    Tukaj je naš skript lupine, ki razlaga vse tri metode za aritmetične operacije.

    #!/bin/bash
    num1=10
    num2=5

    #Aritmetična razširitev ($((…)))

    rezultat=$((num1 + num2))
    echo Vsota: $rezultat

    #Uporaba ukaza expr

    vsota=$(izraz $num1 + $num2)
    echo Vsota: $vsota

    #Uporaba ukaza let

    naj bo vsota = num1 + num2
    echo Vsota: $vsota

    Pojasnilo:

    1. `#!/bin/bash` : To je shebang, ki določa, da je treba skript tolmačiti z lupino Bash.
    2. `num1=10` in ` num2=5` : Te vrstice dodelijo vrednosti 10 in 5 spremenljivkam ` št.1 ` in ` št.2 ` oziroma.
    3. `#Aritmetična razširitev ($((…)))` : To je komentar, ki označuje začetek odseka, ki prikazuje aritmetično razširitev.
    4. `rezultat=$((num1 + num2))` : Ta vrstica uporablja aritmetično razširitev za izračun vsote ` št.1 ` in ` št.2 ` in shrani rezultat v ` rezultat ` spremenljivka.
    5. `echo Sum: $rezultat` : Ta vrstica natisne izračunano vsoto z uporabo vrednosti, shranjene v ` rezultat ` spremenljivka.
    6. `#Uporaba ukaza expr` : To je komentar, ki označuje začetek razdelka, ki prikazuje uporabo znaka ` ekspr ` ukaz za aritmetične operacije.
    7. `vsota=$(izraz $num1 + $num2)` : Ta vrstica uporablja ` ekspr ` ukaz za izračun vsote ` št.1 ` in ` št.2 ` in shrani rezultat v ` vsota ` spremenljivka. Upoštevajte, da ` ekspr Ukaz ` zahteva presledke okoli operatorjev.
    8. `echo Sum: $sum` : Ta vrstica natisne izračunano vsoto z uporabo vrednosti, shranjene v ` vsota ` spremenljivka.
    9. `#Uporaba ukaza let` : To je komentar, ki označuje začetek razdelka, ki prikazuje uporabo znaka ` pustiti ` ukaz za aritmetične operacije.
    10. `naj vsota = num1 + num2″` : Ta vrstica uporablja ` pustiti ` ukaz za izračun vsote ` št.1 ` in ` št.2 ` in rezultat dodeli ` vsota ` spremenljivka. ` pustiti Ukaz ` ne zahteva presledkov okoli operatorjev.
    11. `echo Sum: $sum` : Ta vrstica natisne izračunano vsoto z uporabo vrednosti, shranjene v ` vsota ` spremenljivka.
    aritmetika

    aritmetika

    28) Ustvarite skript, ki preveri, ali je omrežni gostitelj dosegljiv.

    Tukaj je preprost lupinski skript, ki uporablja ukaz ping za preverjanje, ali je omrežni gostitelj dosegljiv:

    #!/bin/bash
    gostitelj=$1″
    če [ -z $gostitelj ]; potem
    echo Uporaba: $0
    izhod 1
    biti
    ping -c 4 $gostitelj

    če [ $? -eq 0]; potem
    echo $host je dosegljiv.
    drugače
    echo $host ni dosegljiv.
    biti

    Pojasnilo:

    1. Kot argument vzame ime gostitelja ali naslov IP in preveri, ali je argument naveden.
    2. Če ni podanega nobenega argumenta, prikaže sporočilo o uporabi in se zapre.
    3. Uporablja ukaz ping z možnostjo -c 4 za pošiljanje štirih zahtev za odmev ICMP navedenemu gostitelju.
    4. Ko se zažene ukaz ping, preveri stanje izhoda ($?). Če je status izhoda 0, to pomeni, da je gostitelj dosegljiv in skript natisne sporočilo o uspehu. V nasprotnem primeru natisne sporočilo o napaki.

    456

    Opomba : Ime gostitelja moramo zagotoviti kot argument pri zagonu skripta. Tukaj smo uporabili google.com

    29) Napišite lupinski skript za iskanje največjega elementa v nizu:

    Tukaj je lupinski skript za iskanje največjega elementa v nizu.

    #!/bin/bash
    # Deklarirajte matriko
    niz=(3 56 24 89 67)

    # Inicializirajte spremenljivko za shranjevanje največje vrednosti, začenši s prvim elementom

    max=${matrika[0]}

    # Iteracija skozi matriko

    za num v ${array[@]}; narediti

    # Primerjajte vsak element s trenutnim maksimumom

    if ((num> max)); potem
    največ=$št
    biti
    Končano

    # Natisnite največjo vrednost

    echo Največji element v matriki je: $max

    Pojasnilo:

    1. ` #!/bin/bash `: vrstica shebang določa, da je treba skript interpretirati z lupino Bash.
    2. ` niz=(3 56 24 89 67) `: Niz je deklariran in inicializiran z vrednostmi.
    3. ` max=${matrika[0]} `: `max` se inicializira s prvim elementom matrike.
    4. ` za num v ${array[@]}; narediti `: zanka `za` se uporablja za ponavljanje elementov matrike.
    5. ` if ((num> max)); potem `: Stavek `if` preveri, ali je trenutni element `num` večji od trenutnega največjega `max`.
    6. ` max=$num`: če`num ` je večji od `max`, `max` se posodobi z vrednostjo num.
    7. ` Končano `: Zanka `za` je zaprta.
    8. ` echo Največji element v matriki je: $max `: Končno skript natisne največjo vrednost, najdeno v matriki.
    461

    največje število

    30) Napišite skripto za izračun vsote elementov v matriki.

    #!/bin/bash

    # Deklarirajte matriko

    niz=(1 65 22 19 94)

    # Inicializirajte spremenljivko za shranjevanje vsote

    vsota=0

    # Iterirajte skozi matriko in dodajte vsak element k vsoti

    za num v ${array[@]}; narediti
    am=$((am + am))
    Končano

    # Izpiši vsoto

    echo Vsota elementov v matriki je: $sum

    Pojasnilo:

    ` #!/bin/bash `: vrstica shebang določa, da je treba skript interpretirati z lupino Bash.

    ` niz=(1 65 22 19 94) `: Niz je deklariran in inicializiran z vrednostmi.

    ` vsota=0 `:` vsota ` se inicializira na nič, da zadrži vsoto elementov.

    ` za num v ${array[@]}; narediti `:A` za ` zanka se uporablja za ponavljanje elementov matrike.

    ` am=$((am + am)) `: Znotraj zanke, vsak element ` na enem ` je dodan v ` vsota ` spremenljivka.

    ` Končano `: ` za ` zanka je zaprta.

    `echo Vsota elementov v matriki je: $sum`: Na koncu skript natisne vsoto vseh elementov v matriki.

    462

    Vsota elementov

    Izvedite več o lupinskih skriptih

    Zaključek

    Vsi geeki vemo, da je lupinski skript zelo koristen za povečanje delovne produktivnosti in prihranek časa. Torej, v tem članku smo zajeli 30 zelo uporabnih in najbolj prevarantskih primerov lupinskih skriptov . Upamo, da vam bo ta popoln vodnik o primeru lupinskega skripta pomagal razumeti vse o lupinskih skriptih.



    : Če je imenik prazen, ta vrstica natisne sporočilo o uporabi z imenom skripta (

    Za vse distribucije Linuxa je lupinski skript kot čarobna palica, ki avtomatizira proces, uporabnikom prihrani čas in poveča produktivnost. Ta vadnica za skriptiranje vas bo seznanila s 25 plus primeri skriptiranja.

    Toda preden preidemo na temo lupinsko skriptiranje primeri, razumejmo lupinski skript in dejanske primere uporabe lupinskega skripta.

    Kaj je Shell Script?

    No, lupina je a CLI ( tolmač ukazne vrstice ), ki se izvaja v besedilnem oknu, kjer lahko uporabniki upravljajo in izvajajo ukaze lupine. Po drugi strani pa postopek pisanja nabora ukazov, ki se izvajajo v sistemu Linux. Datoteka, ki vključuje takšna navodila, se imenuje bash skript.

    Uporaba lupinskih skriptov

    Spodaj je nekaj pogostih uporab lupinskega skripta:

    • Avtomatizacija nalog – Uporablja se lahko za avtomatizacijo ponavljajočih se nalog, kot so običajne varnostne kopije in nameščanje programske opreme.
    • Prilagajanje – Uporabite lahko lupinske skripte za oblikovanje okolja ukazne vrstice in enostavno opravljanje svoje naloge glede na potrebe.
    • Upravljanje datotek – Lupinske skripte je mogoče uporabiti tudi za upravljanje in manipulacijo datotek in imenikov, kot so premikanje, kopiranje, preimenovanje ali brisanje datotek.

    Primeri lupinskih skriptov v Linuxu

    1) Kaj označuje znak (#!) na začetku lupinskega skripta?

    The drevo (#!) na začetku skripta označuje tolmača, ki naj se uporabi za izvedbo skripta. Sistemu pove, katera lupina ali tolmač naj interpretira ukaze skripta.

    Na primer: Recimo, da imamo skript z imenom myscript.sh napisano v lupini Bash:

    shebang

    shebang

    V tem primeru:

    • #!/bin/bash na začetku skripta pomeni, da je treba skript interpretirati z lupino Bash.
    • Ukazi echo se uporabljajo za tiskanje sporočil na terminal.

    2) Kako zaženete lupinski skript iz ukazne vrstice?

    Če želite zagnati lupinski skript iz ukazne vrstice, moramo slediti tem korakom:

    • Prepričajte se, da ima skriptna datoteka dovoljenja za izvedljivo uporabo ukaz chmod :
    chmod +x myscript.sh>
    • Izvedite skript z njegovim imenom datoteke:
    ./myscript.sh>

    Tukaj morate zamenjati myscrtipt.sh z imenom vašega skripta.

    3) Napišite lupinski skript, ki natisne techcodeview.com na terminal.

    Ustvarite ime skripta `myscript.sh` (uporabljamo ` Ker ` urejevalnik, izberete lahko poljuben urejevalnik)

    vim myscript.sh>

    #!/bin/bash
    # Ta skript natisne techcodeview.com na terminal
    echo techcodeview.com

    tiskano ime

    tiskano ime

    Naš skript naredimo izvršljiv z uporabo `chmod +x`, nato ga izvedemo z `./myscipt.sh` in dobimo želeni rezultat techcodeview.com.

    4) Pojasnite namen ukaza echo v skriptni lupini.

    The ukaz echo se uporablja za prikaz besedila ali spremenljivk na terminalu. Običajno se uporablja za tiskanje sporočil, vrednosti spremenljivk in generiranje izhodnih podatkov programa.

    434

    ukaz echo

    V tem primeru smo izvedli `echo` na terminalu neposredno, saj deluje enako znotraj skripta lupine.

    5) Kako lahko dodelite vrednost spremenljivki v lupinskem skriptu?

    Spremenljivkam so dodeljene vrednosti z uporabo operatorja dodeljevanja =.

    Na primer:

    #!/bin/bash
    # Dodeljevanje vrednosti spremenljivki
    ime=Jayesh
    starost=21
    echo $name $age

    Pojasnilo:

    • Spremenljivki imena je dodeljena vrednost Jayesh.
    • Spremenljivki starosti je pripisana vrednost 21.
    • echo se uporablja za tiskanje in `$name` `$age` se uporablja za klic vrednosti, shranjene v spremenljivkah.

    435

    6) Napišite lupinski skript, ki kot vhod sprejme uporabniško ime in ga pozdravi.

    Ustvarite ime skripta `example.sh`.

    #!/bin/bash
    # Vprašajte uporabnika za njegovo ime
    echo Kako ti je ime?
    preberi ime
    # Pozdravite uporabnika
    echo Pozdravljeni, $name! Lepo te je bilo srečati.

    Pojasnilo:

    • #!/bin/bash: To je shebang linija. Sistemu pove, naj za izvedbo skripta uporabi tolmač Bash.
    • # Vprašajte uporabnika za njegovo ime: To je komentar. Zagotavlja kontekst o prihajajoči kodi. Tolmač ignorira komentarje.
    • echo Kako ti je ime?: Ukaz echo se uporablja za prikaz besedila v dvojnih narekovajih na terminalu.
    • preberi ime: Ukaz za branje počaka, da uporabnik vnese besedilo, in ga shrani v ime spremenljivke.
    • echo Pozdravljeni, $name! Veseli me.: Ta vrstica uporablja ukaz echo za tiskanje pozdravnega sporočila, ki vključuje vrednost spremenljivke imena, ki je bila zbrana iz uporabnikovega vnosa.

    436

    7) Kako dodate komentarje lupinskemu skriptu?

    Komentarji v skriptni lupini se uporabljajo za zagotavljanje razlag ali konteksta kode. Tolmač jih ignorira in so namenjene samo ljudem, ki berejo scenarij. Komentarje lahko dodate s simbolom #.

    #!/bin/bash
    # To je komentar, ki pojasnjuje namen skripta
    odmev gfg

    8) Ustvarite lupinski skript, ki preveri, ali datoteka obstaja v trenutnem imeniku.

    Tukaj je skript, ki preveri, ali datoteka z imenom example.txt obstaja v trenutnem imeniku:

    #!/bin/bash
    datoteka=primer.txt
    # Preverite, ali datoteka obstaja
    if [ -e $file ]; potem
    echo Datoteka obstaja: $file
    drugače
    echo Datoteke ni mogoče najti: $file
    biti

    Pojasnilo:

    1. #!/bin/bash: To je shebang vrstica, ki določa tolmača (/bin/bash), ki bo uporabljen za izvajanje skripta.
    2. file=example.txt: Ta vrstica definira datoteko spremenljivke in ji dodeli vrednost example.txt. To lahko zamenjate z imenom datoteke, ki jo želite preveriti.
    3. if [ -e $file ]; potem: Ta vrstica začne stavek if. Pogoj [ -e $datoteka ] preveri, ali datoteka, določena z vrednostjo spremenljivke datoteke, obstaja. Zastavica -e se uporablja za preverjanje obstoja datoteke.
    4. echo Datoteka obstaja: $file: Če je pogoj resničen (tj. datoteka obstaja), ta vrstica natisne sporočilo, ki označuje, da datoteka obstaja, skupaj z imenom datoteke.
    5. else: Če je pogoj napačen (tj. datoteka ne obstaja), skript izvede kodo pod vejo else.
    6. echo Datoteke ni bilo mogoče najti: $file: Ta vrstica natisne sporočilo o napaki, ki označuje, da navedena datoteka ni bila najdena, skupaj z imenom datoteke.
    7. fi: Ta vrstica označuje konec stavka if.
    Iskanje datoteke

    Iskanje datoteke

    9) Kakšna je razlika med enojnimi narekovaji (‘) in dvojnimi narekovaji () v skriptni lupini?

    Enojni narekovaji (‘) in dvojni narekovaji () se uporabljajo za zapiranje nizov v skriptno lupino, vendar se obnašajo različno:

    • Enojni narekovaji: vse med enojnimi narekovaji se obravnava kot dobesedni niz. Imena spremenljivk in večina posebnih znakov niso razširjeni.
    • Dvojni narekovaji: Spremenljivke in določeni posebni znaki v dvojnih narekovajih so razširjeni. Vsebina je predmet zamenjave spremenljivke in zamenjave ukaza.

    #!/bin/bash

    abcd=Pozdravljeni
    echo '$abcd' # Izhod: $abcd
    echo $abcd # Izhod: Pozdravljeni

    10) Kako lahko uporabite argumente ukazne vrstice v lupinskem skriptu?

    Argumenti ukazne vrstice so vrednosti, ki se zagotovijo skriptu, ko se ta izvede. Do njih je mogoče dostopati znotraj skripta z uporabo posebnih spremenljivk, kot so $1, $2 itd., kjer $1 predstavlja prvi argument, $2 predstavlja drugi argument itd.

    Na primer: Če ime našega skripta v `example.sh`

    #!/bin/bash

    echo Ime skripta: $0
    echo Prvi argument: $1
    echo Drugi argument: $2

    Če zaženemo skript z `.example.sh hello_1 hello_2`, bo izpisal:

    argumenti cli

    argumenti cli

    11) Kako uporabljate zanko for za ponavljanje po seznamu vrednosti?

    Ustvarite ime skripta `example.sh`.

    #!/bin/bash

    sadje=(jabolko banana češnjev datum)
    za sadje v ${fruits[@]}; narediti
    echo Trenutno sadje: $sadje
    Končano

    Pojasnilo:

    Vrstica `fruits=` ustvari matriko z imenom sadje s štirimi elementi: jabolko, banana, češnja in datelj.

    • za sadje v ${fruits[@]}; do: Ta vrstica začne zanko for. Tukaj je, kaj vsak del pomeni:
    • za sadje: To deklarira spremenljivko zanke, imenovano sadje. V vsaki ponovitvi zanke bo fruit vseboval vrednost trenutnega elementa iz matrike fruits.
    • ${fruits[@]}: To je razširitev matrike, ki vzame vse elemente iz matrike fruits. Sintaksa ${…} zagotavlja, da se vsak element obravnava kot ločena postavka.
    • do: Ta ključna beseda označuje začetek telesa zanke.
    • echo Trenutni sad: $fruit: Znotraj zanke ta vrstica uporablja ukaz echo za prikaz trenutne vrednosti spremenljivke zanke fruit. Za vsako sadje v nizu natisne sporočilo, kot je trenutno sadje: jabolko.
    • done: Ta ključna beseda označuje konec telesa zanke. Skriptu sporoči, da se je zanka končala.
    za zanko

    za zanko

    12) Napišite lupinski skript, ki izračuna vsoto celih števil od 1 do N z uporabo zanke.

    Ustvarite ime skripta `example.sh`.

    #!/bin/bash

    echo Vnesite številko (N):
    preberi N
    vsota=0
    for (( i=1; i<=$N; i++ )); narediti
    vsota=$((vsota + i))
    Končano
    echo Vsota celih števil od 1 do $N je: $sum

    Pojasnilo:
    Skript se začne tako, da vas prosi, da vnesete številko (N) z read. Ta številka bo določila, kolikokrat se bo zanka zagnala.

    1. Spremenljivka sum je inicializirana na 0. Ta spremenljivka bo sledila vsoti celih števil.
    2. Zanka for se začne z for (( i=1; i<=$N; i++ )). Ta struktura zanke se uporablja za ponavljanje niza dejanj določeno število krat, v tem primeru od 1 do vrednosti N.
    3. Znotraj zanke se zgodijo te stvari:
      • i=1 nastavi spremenljivko zanke i na 1 na začetku vsake iteracije.
      • Pogoj zanke i<=$N preveri, ali je i še vedno manjši ali enak danemu številu N.
      • Če je pogoj resničen, se telo zanke izvede.
      • sum=$((sum + i)) izračuna novo vrednost vsote tako, da ji prišteje trenutno vrednost i. To sešteje cela števila od 1 do trenutne vrednosti i.
    4. Po vsaki ponovitvi i++ poveča vrednost i za 1.
    5. Zanka se nadaljuje, dokler pogoj i<=$N ne postane napačen (ko i postane večji od N).
    6. Ko je zanka končana, skript prikaže vsoto celih števil od 1 do vnesenega števila N.

    439

    13) Ustvarite skript, ki išče določeno besedo v datoteki in šteje njene pojavitve.

    Ustvarite ime skripta `word_count.sh`

    #!/bin/bash

    echo Vnesite besedo za iskanje:
    preberi ciljno_besedo
    echo Vnesite ime datoteke:
    preberi ime datoteke
    count=$(grep -o -w $target_word $filename | wc -l)
    echo Beseda '$target_word' se pojavi $count-krat v '$filename'.

    Pojasnilo:

    • echo Vnesite besedo za iskanje:: Ta vrstica prikaže sporočilo, ki uporabnika prosi, da vnese besedo, ki jo želi iskati v datoteki.
    • read target_word: Ta vrstica prebere vnos uporabnika in ga shrani v spremenljivko z imenom target_word.
    • echo Vnesite ime datoteke:: Ta vrstica prikaže sporočilo, ki uporabnika prosi, da vnese ime datoteke, v kateri želi iskati.
    • preberi ime datoteke: Ta vrstica prebere vnos, ki ga zagotovi uporabnik, in ga shrani v spremenljivko z imenom ime datoteke.
    • count=$(grep -o -w $target_word $filename | wc -l): Ta vrstica opravlja glavno delo skripta. Razčlenimo ga še naprej:
      • grep -o -w $target_word $filename: Ta del ukaza išče pojavitve ciljne_besede v navedenem imenu datoteke. Možnosti -o in -w zagotavljata, da se štejejo samo celotne besede.
      • |: To je cev, ki sprejme izhod prejšnjega ukaza in ga pošlje kot vhod v naslednji ukaz.
      • wc -l: Ta del ukaza uporablja ukaz wc za štetje števila vrstic v vnosu. Možnost -l posebej šteje vrstice.
      • Celoten ukaz izračuna število pojavitev ciljne_besede v datoteki in to število dodeli spremenljivki coun

    441

    14) Pojasnite razlike med standardnim izhodom (stdout) in standardno napako (stderr).

    Glavna razlika med standardnim izhodom (stdout) in standardno napako (stderr) je naslednja:

    • Standardni izhod (stdout): To je privzeti izhodni tok, kamor gre običajni izhod ukaza. Privzeto je prikazan na terminalu. Lahko ga preusmerite v datoteko z>.
    • Standardna napaka (stderr): To je izhodni tok za sporočila o napakah in opozorila. Privzeto je prikazan tudi na terminalu. Lahko ga preusmerite v datoteko z uporabo 2>.

    15) Pojasnite koncept pogojnih stavkov v skriptni lupini.

    Pogojni stavki v skriptni lupini omogočajo sprejemanje odločitev in nadzor nad potekom našega skripta na podlagi določenih pogojev. Našemu skriptu omogočajo izvajanje različnih nizov ukazov, odvisno od tega, ali je določen pogoj resničen ali napačen. Primarni pogojni stavki v skriptni lupini so stavek if, stavek elif (neobvezno) in stavek else (izbirno).

    Tukaj je osnovna struktura pogojnega stavka v skriptni lupini:

    če [ pogoj ]; potem
    # Ukazi za izvedbo, če je pogoj resničen
    elif [ drug_pogoj ]; potem
    # Ukazi za izvedbo, če je other_condition resničen (neobvezno)
    drugače
    # Ukazi za izvedbo, če nobeden od pogojev ni resničen (neobvezno)
    biti

    Pojasnilo:

    • [pogoj] = Ukaz, ki ovrednoti pogoj in vrne resnično (0) ali napačno (ničelno) izhodno stanje.
    • then = To je ključna beseda, ki nakazuje, da bodo ukazi, ki ji sledijo, izvedeni, če je pogoj ocenjen kot resničen.
    • elif = (okrajšava za else if) To je razdelek, ki nam omogoča, da določimo dodatne pogoje za preverjanje.
    • else = to je razdelek, ki vsebuje ukaze, ki bodo izvedeni, če nobeden od pogojev ni resničen.
    • fi = To je ključna beseda, ki označuje konec pogojnega bloka.

    16) Kako berete vrstice iz datoteke znotraj lupinskega skripta?

    Za brati vrstice iz datoteke znotraj lupinskega skripta, lahko uporabimo različne metode, vendar je eden od pogostih pristopov uporaba zanke while v kombinaciji z ukazom read. Takole lahko to storimo:

    #!/bin/bash
    file=/home/jayeshkumar/jayesh.txt
    # Preverite, ali datoteka obstaja
    if [ -e $file ]; potem
    medtem ko IFS= preberi -r vrstico; narediti
    echo Branje vrstice: $line
    # Tukaj dodajte svojo logiko obdelave
    končano <$file
    drugače
    echo Datoteke ni mogoče najti: $file
    biti

    Pojasnilo:

    1. #!/bin/bash: To je shebang vrstica, ki določa tolmača (/bin/bash), ki bo uporabljen za izvajanje skripta.
    2. file=/home/jayeshkumar/jayesh.txt: Ta vrstica definira datoteko spremenljivke in dodeli celotno pot do datoteke jayesh.txt v imeniku /home/jayeshkumar. Spremenite to pot, da bo ustrezala dejanski poti datoteke, ki jo želite prebrati.
    3. if [ -e $file ]; potem: Ta vrstica začne stavek if. Preveri, ali datoteka, podana s spremenljivko $file, obstaja. Zastavica -e preverja obstoj datoteke.
    4. medtem ko IFS= preberi -r vrstico; do: Ta vrstica sproži zanko while, ki bere vrstice iz datoteke.
      • IFS=: IFS (notranje ločilo polj) je nastavljeno na prazno vrednost, da ohrani presledke na začetku in na koncu.
      • read -r line: To prebere trenutno vrstico iz datoteke in jo shrani v spremenljivo vrstico.
    5. echo Prebrana vrstica: $line: Ta vrstica natisne vsebino vrstice, ki je bila prebrana iz datoteke. Spremenljivka $line vsebuje vsebino trenutne vrstice.
    6. # Tukaj dodajte svojo logiko obdelave: To je komentar mesta, kjer lahko dodate svojo logiko za obdelavo vsake vrstice. Na primer, lahko analizirate vrstico, izvlečete informacije ali izvedete določena dejanja na podlagi vsebine.
    7. done <$file: To označuje konec zanke while. < $file preusmeri vsebino datoteke, ki jo prebere zanka.
    8. else: Če datoteka ne obstaja (pogoj v stavku if je napačen), skript izvede kodo pod vejo else.
    9. echo Datoteke ni bilo mogoče najti: $file: Ta vrstica natisne sporočilo o napaki, ki nakazuje, da navedena datoteka ni bila najdena.
    10. fi: Ta vrstica označuje konec stavka if.
    bralna datoteka

    bralna datoteka

    Tukaj smo uporabili ` pwd ` ukaz za pridobitev poti trenutnega imenika.

    17) V lupinskem skriptu napišite funkcijo, ki izračuna faktorial danega števila.

    Tukaj je scenarij, kiizračunaj faktorijeldanega števila.

    #!/bin/bash
    # Definirajte funkcijo za izračun faktoriala
    izračunaj_faktorial() {
    num=1$
    dejstvo=1
    for ((i=1; i<=num; i++)); narediti
    dejstvo=$((dejstvo * i))
    Končano
    echo $fact
    }
    # Pozove uporabnika, da vnese številko
    echo Vnesite številko:
    preberi input_num
    # Pokličite funkcijo izračun faktorja z vneseno številko
    faktorski_rezultat=$(izračunaj_faktorski $input_num)
    # Prikaži faktorski rezultat
    echo Faktorial $input_num je: $factorial_result

    Pojasnilo:

    1. Skript se začne z vrstico shebang #!/bin/bash za podajanje tolmača.
    2. Calculate_factorial() je definiran kot funkcija. Potrebuje en argument, num, ki je število, za katerega je treba izračunati faktorial.
    3. Znotraj funkcije je dejstvo inicializirano na 1. Ta spremenljivka bo shranila faktorski rezultat.
    4. Zanka for ponavlja od 1 do danega števila (num). V vsaki ponovitvi pomnoži trenutno vrednost dejstva z indeksom zanke i.
    5. Ko je zanka končana, spremenljivka dejstva vsebuje izračunani faktorial.
    6. Skript uporabnika pozove, da vnese številko z read.
    7. Funkcija Calculate_factorial se pokliče s številko, ki jo poda uporabnik, rezultat pa se shrani v spremenljivko factorial_result.
    8. Nazadnje skript prikaže izračunani faktorski rezultat.
    Faktorial

    Faktoriel

    18) Kako ravnate s signali, kot je Ctrl+C v lupinskem skriptu?

    V lupinskem skriptu lahko z ukazom trap upravljate s signali, kot je Ctrl+C (znan tudi kot SIGINT). Ctrl+C ustvari signal SIGINT, ko ga uporabnik pritisne, da prekine izvajajoči se skript ali program. Z uporabo ukaza trap lahko določite dejanja, ki naj bodo izvedena, ko je prejet določen signal. Tako ravnate s signali, kot je Ctrl+C, v lupinskem skriptu:

    #!/bin/bash
    pospravi() {
    echo Skript prekinjen. Izvajanje čiščenja …
    # Tukaj dodajte svoja dejanja čiščenja
    izhod 1
    }
    # Nastavite past za klic funkcije čiščenja, ko prejmete Ctrl+C (SIGINT).
    čiščenje pasti SIGINT
    # Preostanek vašega scenarija
    echo Teče …
    spati 10
    odmev Končano.

    Ravnanje s signali je pomembno za robustnost skriptov in zagotavljanje, da elegantno obravnavajo nepričakovane prekinitve. Funkcijo čiščenja lahko prilagodite svojim posebnim potrebam, na primer zapiranje datotek, zaustavitev procesov ali beleženje podatkov, preden se skript zapre.

    Pojasnilo:

    1. #!/bin/bash: Ta vrstica shebang določa tolmača, ki bo uporabljen za izvajanje skripta.
    2. cleanup() { … }: To definira funkcijo z imenom cleanup. Znotraj te funkcije lahko vključite vsa dejanja, ki jih je treba izvesti, ko je skript prekinjen, na primer zapiranje datotek, sprostitev virov ali izvajanje drugih nalog čiščenja.
    3. trap cleanup SIGINT: Ukaz trap se uporablja za nastavitev upravljalnika signalov. V tem primeru določa, da se ob prejemu signala SIGINT (Ctrl+C) izvede funkcija čiščenja.
    4. echo Running…, sleep 10, echo Finished.: To so samo vzorčni ukazi za simulacijo izvajanja skripta.

    446

    19) Ustvarite skript, ki preveri in odstrani podvojene vrstice v besedilni datoteki.

    Tukaj je naš skript za linux, v katerem bomo odstranili podvojene vrstice iz besedilne datoteke.

    #!/bin/bash
    vhodna_datoteka=vhod.txt
    izhodna_datoteka=izhod.txt
    razvrsti $input_file | uniq> $output_file
    echo Podvojene vrstice so bile uspešno odstranjene.

    Pojasnilo:

    1. Skript se začne s shebangom (#!/bin/bash), kar pomeni, da je treba skript interpretirati z lupino Bash.
    2. Spremenljivka input_file je nastavljena na ime vhodne datoteke, ki vsebuje podvojene vrstice (to spremenite v svoje dejansko ime vhodne datoteke).
    3. Spremenljivka output_file je nastavljena na ime izhodne datoteke, kjer bodo odstranjeni dvojniki (to spremenite v želeno ime izhodne datoteke).
    4. Skript uporablja ukaz sort za razvrščanje vrstic v vhodni datoteki. Razvrščanje vrstic zagotavlja, da so podvojene vrstice združene skupaj.
    5. Razvrščene vrstice se nato prenesejo skozi ukaz uniq, ki odstrani zaporedne podvojene vrstice. Izhod tega procesa je preusmerjen v izhodno datoteko.
    6. Ko so dvojniki odstranjeni, skript natisne sporočilo o uspehu.
    odstranjevanje podvojenih vrstic

    odstranjevanje podvojenih vrstic

    Tukaj uporabljamo ` mačka ` za prikaz besedila znotraj besedilne datoteke.

    20) Napišite skripto, ki ustvari varno naključno geslo.

    Tukaj je naš skript za ustvarjanje varnega naključnega gesla.

    #!/bin/bash
    # Funkcija za ustvarjanje naključnega gesla
    generiraj_geslo() {
    tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
    }
    # Pokličite funkcijo in shranite generirano geslo
    geslo=$(generiraj_geslo)
    echo Ustvarjeno geslo: $password

    Opomba: Uporabnik lahko ustrezno spremeni dolžino gesla, tako da zamenja številko `12`.

    Pojasnilo:

    1. Skript se začne s shebangom (#!/bin/bash), kar pomeni, da ga je treba interpretirati z lupino Bash.
    2. Funkcija generate_password je definirana za ustvarjanje naključnega gesla. Takole deluje:
      • tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
      • fold -w 12 razdeli filtrirane naključne podatke v vrstice s širino 12 znakov.
      • head -n 1 izbere prvo vrstico in nam dejansko poda naključno zaporedje znakov dolžine 12.
    3. Spremenljivki gesla je dodeljen rezultat klica funkcije generate_password.
    4. Na koncu se ustvarjeno geslo prikaže z odmevom.

    448

    21) Napišite lupinski skript, ki izračuna skupno velikost vseh datotek v imeniku.

    Tukaj je lupinski skript za izračun skupne velikosti vseh datotek v imeniku.

    #!/bin/bash
    imenik=/pot/do/vašega/imenika
    total_size=$(du -csh $directory | grep total | awk ‘{print $1}’)
    echo Skupna velikost datotek v $directory: $total_size

    Pojasnilo:

    1. Skript se začne z #!/bin/bash shebang, kar pomeni, da ga je treba interpretirati z lupino Bash.
    2. Spremenljivka imenika je nastavljena na pot imenika, za katerega želite izračunati skupno velikost datoteke. Zamenjajte /path/to/your/directory z dejansko potjo.
    3. Ukaz du se uporablja za oceno porabe prostora za datoteke. Uporabljene možnosti so:
      • -c: Ustvari skupno vsoto.
      • -s: Prikaži samo skupno velikost navedenega imenika.
      • -h: Velikosti tiskanja v človeku berljivem formatu (npr. KB, MB, GB).
    4. Izhod du je posredovan grep total, da filtrira vrstico, ki vsebuje skupno velikost.
    5. awk '{print $1}' se uporablja za ekstrahiranje prvega polja (skupne velikosti) iz vrstice.
    6. Izračunana skupna velikost je shranjena v spremenljivki total_size.
    7. Na koncu skript prikaže skupno velikost z odmevom.
    Skupna velikost datotek

    Skupna velikost datotek

    Tukaj smo uporabili ` pwd ` za ogled trenutne poti imenika.

    22) Pojasnite razliko med stavkoma if in elif v skriptni lupini.

    Funkcija `if`Staiftement Izjava `elif`
    Namen Pojasnite razliko med stavkoma if in elif v skriptni lupini. Zagotavlja alternativne pogoje za preverjanje, kdaj je začetni pogoj if napačen.
    uporaba Uporablja se za začetno stanje. Uporablja se za začetnim pogojem if za preverjanje dodatnih pogojev.
    število blokov Lahko ima samo en blok if. Lahko ima več blokov elif, vendar samo en blok else (neobvezno).
    Izvedba Izvede blok kode, povezan s stavkom if, če je pogoj resničen. Če je pogoj napačen, se izvede blok else (če je prisoten) (izbirno). Preveri vsak pogoj elif po vrstnem redu. Če je en pogoj elif resničen, se izvede ustrezen blok kode in skript zapusti celoten pogojni blok. Če nobeden od pogojev elif ni resničen, se izvede blok else (če je prisoten).
    Ugnezdene strukture Lahko se ugnezdi znotraj drugih blokov if, elif ali else. Ni ga mogoče ugnezditi znotraj drugega bloka elif, lahko pa ga uporabite znotraj bloka if ali else.

    Razumejmo to s primerom.

    #!/bin/bash
    število=5
    če [$število -gt 10]; potem
    echo $število je večje od 10
    drugače
    echo $število ni večje od 10
    biti
    odmev ——–
    če [$število -gt 10]; potem
    echo $število je večje od 10
    elif [$število -eq 10]; potem
    echo $število je enako 10
    drugače
    echo $število je manjše od 10
    biti

    Pojasnilo:

    V tem primeru prvi blok if preveri, ali je število večje od 10. Če ni, natisne sporočilo, ki kaže, da število ni večje od 10. Drugi blok s stavki elif zaporedoma preverja več pogojev, dokler eden od njih ni resničen. V tem primeru, ker je vrednost števila 5, bo rezultat:

    razlika if_elif

    razlika if_elif

    23) Kako uporabljate zanko while za ponavljajoče se izvajanje ukazov?

    Zanka while se uporablja v skriptni lupini za ponavljajoče se izvajanje niza ukazov, dokler je podani pogoj resničen. Zanka nadaljuje z izvajanjem ukazov, dokler pogoj ne postane false.

    Tukaj je osnovna sintaksa zanke while:

    medtem ko [pogoj]; narediti
    # Ukazi za izvedbo
    Končano

    Pojasnilo:

    1. Zanka `while` se začne s ključno besedo `while`, ki ji sledi pogoj v oglatih oklepajih `[ ]`.
    2. Telo zanke, ki vsebuje ukaze, ki jih je treba izvesti, je zaprto med ključnima besedama `do` in `done`.
    3. Zanka najprej preveri stanje. Če je pogoj resničen, se izvedejo ukazi v telesu zanke. Ko se telo zanke izvede, se pogoj znova preveri in postopek se ponavlja, dokler pogoj ne postane napačen.

    primer: Če želimo natisniti številke od 1 do 5

    #!/bin/bash
    števec=1
    medtem ko [ $counter -le 5 ]; narediti
    echo Številka: $števec
    števec=$((števec + 1))
    Končano

    Pojasnilo:

    • Spremenljivka števca je nastavljena na 1.
    • Zanka while preveri, ali je vrednost števca manjša ali enaka 5. Dokler je ta pogoj resničen, se zanka nadaljuje z izvajanjem.
    • Znotraj zanke se trenutna vrednost števca natisne z odmevom.
    • Števec se poveča za 1 z uporabo izraza $((števec + 1)).
    medtem ko zanka

    medtem ko zanka

    24) Ustvarite lupinski skript, ki najde in izpiše vse prazne datoteke v imeniku.

    Skript lupine, ki ga lahko uporabite za iskanje in seznam vseh praznih datotek v imeniku z uporabo ukazov `find` in `stat`:

    #!/bin/bash
    imenik=$1″
    if [ -z $imenik ]; potem
    echo Uporaba: $0
    izhod 1
    biti

    če [! -d $imenik]; potem
    echo Napaka: '$directory' ni veljaven imenik.
    izhod 1
    biti
    echo Prazne datoteke v $directory:
    najdi $imenik -tip f -prazen

    Pojasnilo:

    1. ` #!/bin/bash `: To se imenuje shebang in operacijskemu sistemu pove, naj uporabi lupino Bash za interpretacijo in izvedbo skripta.
    2. ` imenik=$1″ `: Ta vrstica dodeli prvi argument ukazne vrstice (označen z $1) spremenljivki ` imenik `.
    3. ` if [ -z $imenik ]; potem `: Ta vrstica začne stavek if, ki preveri, ali je ` imenik ` spremenljivka je prazna (-z preveri prazen niz).
    4. ` echo Uporaba: $0 `: Če je imenik prazen, ta vrstica natisne sporočilo o uporabi, kjer je ` 0 $ ` predstavlja ime skripta.
    5. ` izhod 1 `: Ta vrstica zapusti skript z izhodno kodo ` 1 `, ki označuje napako.
    6. ` biti `: Ta vrstica označuje konec ` če ` izjava.
    7. ` če [! -d $imenik]; potem `: To zažene drug stavek if za preverjanje, ali navedeni imenik obstaja (` -d ` preizkusi za imenik).
    8. ` echo Napaka: '$directory' ni veljaven imenik. `: Če navedeni imenik ne obstaja, ta vrstica natisne sporočilo o napaki.
    9. ` izhod 1 `: Zapre skript z izhodno kodo ` 1 `.
    10. ` biti `: Označuje konec drugega ` če` izjava.
    11. ` echo Prazne datoteke v $directory: `: Če je do zdaj vse veljavno, ta vrstica natisne sporočilo, ki nakazuje, da bo skript prikazal prazne datoteke v navedenem imeniku.
    12. ` najdi $imenik -tip f -prazen `: Ta vrstica uporablja ` najti ` ukaz za iskanje praznih datotek (` -prazno `) vrste običajnih datotek (` - tip f `) v podanem imeniku. Nato navede te prazne datoteke.
    Iskanje praznih datotek

    Iskanje praznih datotek

    Opomba : Pri zagonu skripta moramo zagotoviti imenik kot argument. Tukaj smo uporabili pot trenutnega imenika home/jayeshkumar/

    25) Kakšen je namen ukaza read v skriptni lupini?

    Ukaz za branje v skriptni lupini omogoča, da vas skript vpraša za informacije. To je tako, kot če bi vam računalnik zastavil vprašanje in čakal na vaš odgovor. To je uporabno za skripte, ki zahtevajo, da nekaj vtipkate, ali ko mora skript delati z informacijami iz datotek. Ukaz za branje pomaga skriptu, da se ustavi in ​​počaka na tisto, kar vtipkate, nato pa lahko te podatke uporabi za več stvari v skriptu.

    Sintaksa ukaza za branje:

    read variable_name>

    Primer : Če želimo vzeti ime kot vnos od uporabnika, da ga natisnemo.

    #!/bin/bash
    echo Prosimo, vnesite svoje ime:
    preberi ime
    echo Pozdravljeni, $name!

    453

    preberi nam

    Če povzamemo, ukaz za branje se uporablja za zajemanje uporabniškega vnosa ali podatkov iz datotek znotraj lupinskih skriptov, zaradi česar so skripti bolj interaktivni in vsestranski.

    26) Napišite lupinski skript, ki pretvori vsa imena datotek v imeniku v male črke.

    Tukaj je lupinski skript, ki pretvori vsa imena datotek v imeniku v male črke.

    #!/bin/bash
    imenik=$1″
    if [ -z $imenik ]; potem
    echo Uporaba: $0
    izhod 1
    biti

    če [! -d $imenik]; potem

    echo Napaka: '$directory' ni veljaven imenik.
    izhod 1
    biti

    cd $imenik || izhod 1

    za datoteko v *; narediti
    if [ -f $file ]; potem
    novo ime=$(echo $file | tr 'A-Z' 'a-z')
    [ $file != $newname ] && mv $file $newname
    biti
    Končano

    Pojasnilo:

    1. #!/bin/bash : To je shebang, ki določa, da je treba skript interpretirati z lupino Bash.
    2. imenik=$1″ : Ta vrstica dodeli prvi argument ukazne vrstice imeniku spremenljivk.
    3. if [ -z $imenik ]; potem : Ta vrstica preveri, ali je spremenljivka imenika prazna (pri izvajanju skripta ni podanega argumenta).
    4. echo Uporaba: $0 : Če je imenik prazen, ta vrstica natisne sporočilo o uporabi z imenom skripta ($0).
    5. izhod 1 : Ta vrstica zapusti skript z izhodno kodo 1, kar pomeni, da je prišlo do napake.
    6. f i: To označuje konec prvega stavka if.
    7. če [! -d $imenik]; potem : Ta vrstica preveri, ali navedeni imenik ne obstaja (-d preizkusi imenik).
    8. echo Napaka: '$directory' ni veljaven imenik. : Če navedeni imenik ne obstaja, ta vrstica natisne sporočilo o napaki.
    9. izhod 1 : zapusti skript z izhodno kodo 1.
    10. biti : Označi konec drugega stavka if.
    11. cd $imenik || izhod 1 : spremeni trenutni delovni imenik v podani imenik. Če sprememba imenika ne uspe (npr. imenik ne obstaja), se skript zapre s kodo napake.
    12. za datoteko v *; narediti: jaz za datoteko v *; narediti: začne zanko, ki ponovi vse elemente v trenutnem imeniku (* se ujema z vsemi imeni datotek).
    13. if [ -f $file ]; potem : preveri, ali je trenutni element ponovitve zanke navadna datoteka (-f preizkusi navadno datoteko).
    14. novo ime=$(echo $file | tr 'A-Z' 'a-z') : Pretvori trenutno ime datoteke ($file) v male črke z uporabo ukaza tr in shrani rezultat v spremenljivko newname.
    15. [ $file != $newname ] && mv $file $newname : primerja izvirno ime datoteke z novim imenom datoteke z malimi črkami. Če sta drugačna, datoteko preimenuje z ukazom mv.
    16. biti : Označuje konec notranjega stavka if.
    17. Končano : Označuje konec zanke.

    454

    Opomba : Pri zagonu skripta moramo zagotoviti imenik kot argument. Tukaj smo uporabili pot trenutnega imenika home/jayeshkumar/test

    27) Kako lahko uporabite aritmetične operacije znotraj lupinskega skripta?

    Aritmetične operacije je mogoče izvajati znotraj lupinskega skripta z uporabo različnih vgrajenih metod. Lupina ponuja mehanizme za preproste aritmetične izračune z uporabo aritmetične razširitve, kot je:

    1. Aritmetična razširitev ($((…)))
    2. Uporaba ukaza expr
    3. Uporaba ukaza let

    Tukaj je naš skript lupine, ki razlaga vse tri metode za aritmetične operacije.

    #!/bin/bash
    num1=10
    num2=5

    #Aritmetična razširitev ($((…)))

    rezultat=$((num1 + num2))
    echo Vsota: $rezultat

    #Uporaba ukaza expr

    vsota=$(izraz $num1 + $num2)
    echo Vsota: $vsota

    #Uporaba ukaza let

    naj bo vsota = num1 + num2
    echo Vsota: $vsota

    Pojasnilo:

    1. `#!/bin/bash` : To je shebang, ki določa, da je treba skript tolmačiti z lupino Bash.
    2. `num1=10` in ` num2=5` : Te vrstice dodelijo vrednosti 10 in 5 spremenljivkam ` št.1 ` in ` št.2 ` oziroma.
    3. `#Aritmetična razširitev ($((…)))` : To je komentar, ki označuje začetek odseka, ki prikazuje aritmetično razširitev.
    4. `rezultat=$((num1 + num2))` : Ta vrstica uporablja aritmetično razširitev za izračun vsote ` št.1 ` in ` št.2 ` in shrani rezultat v ` rezultat ` spremenljivka.
    5. `echo Sum: $rezultat` : Ta vrstica natisne izračunano vsoto z uporabo vrednosti, shranjene v ` rezultat ` spremenljivka.
    6. `#Uporaba ukaza expr` : To je komentar, ki označuje začetek razdelka, ki prikazuje uporabo znaka ` ekspr ` ukaz za aritmetične operacije.
    7. `vsota=$(izraz $num1 + $num2)` : Ta vrstica uporablja ` ekspr ` ukaz za izračun vsote ` št.1 ` in ` št.2 ` in shrani rezultat v ` vsota ` spremenljivka. Upoštevajte, da ` ekspr Ukaz ` zahteva presledke okoli operatorjev.
    8. `echo Sum: $sum` : Ta vrstica natisne izračunano vsoto z uporabo vrednosti, shranjene v ` vsota ` spremenljivka.
    9. `#Uporaba ukaza let` : To je komentar, ki označuje začetek razdelka, ki prikazuje uporabo znaka ` pustiti ` ukaz za aritmetične operacije.
    10. `naj vsota = num1 + num2″` : Ta vrstica uporablja ` pustiti ` ukaz za izračun vsote ` št.1 ` in ` št.2 ` in rezultat dodeli ` vsota ` spremenljivka. ` pustiti Ukaz ` ne zahteva presledkov okoli operatorjev.
    11. `echo Sum: $sum` : Ta vrstica natisne izračunano vsoto z uporabo vrednosti, shranjene v ` vsota ` spremenljivka.
    aritmetika

    aritmetika

    28) Ustvarite skript, ki preveri, ali je omrežni gostitelj dosegljiv.

    Tukaj je preprost lupinski skript, ki uporablja ukaz ping za preverjanje, ali je omrežni gostitelj dosegljiv:

    #!/bin/bash
    gostitelj=$1″
    če [ -z $gostitelj ]; potem
    echo Uporaba: $0
    izhod 1
    biti
    ping -c 4 $gostitelj

    če [ $? -eq 0]; potem
    echo $host je dosegljiv.
    drugače
    echo $host ni dosegljiv.
    biti

    Pojasnilo:

    1. Kot argument vzame ime gostitelja ali naslov IP in preveri, ali je argument naveden.
    2. Če ni podanega nobenega argumenta, prikaže sporočilo o uporabi in se zapre.
    3. Uporablja ukaz ping z možnostjo -c 4 za pošiljanje štirih zahtev za odmev ICMP navedenemu gostitelju.
    4. Ko se zažene ukaz ping, preveri stanje izhoda ($?). Če je status izhoda 0, to pomeni, da je gostitelj dosegljiv in skript natisne sporočilo o uspehu. V nasprotnem primeru natisne sporočilo o napaki.

    456

    Opomba : Ime gostitelja moramo zagotoviti kot argument pri zagonu skripta. Tukaj smo uporabili google.com

    29) Napišite lupinski skript za iskanje največjega elementa v nizu:

    Tukaj je lupinski skript za iskanje največjega elementa v nizu.

    #!/bin/bash
    # Deklarirajte matriko
    niz=(3 56 24 89 67)

    # Inicializirajte spremenljivko za shranjevanje največje vrednosti, začenši s prvim elementom

    max=${matrika[0]}

    # Iteracija skozi matriko

    za num v ${array[@]}; narediti

    # Primerjajte vsak element s trenutnim maksimumom

    if ((num> max)); potem
    največ=$št
    biti
    Končano

    # Natisnite največjo vrednost

    echo Največji element v matriki je: $max

    Pojasnilo:

    1. ` #!/bin/bash `: vrstica shebang določa, da je treba skript interpretirati z lupino Bash.
    2. ` niz=(3 56 24 89 67) `: Niz je deklariran in inicializiran z vrednostmi.
    3. ` max=${matrika[0]} `: `max` se inicializira s prvim elementom matrike.
    4. ` za num v ${array[@]}; narediti `: zanka `za` se uporablja za ponavljanje elementov matrike.
    5. ` if ((num> max)); potem `: Stavek `if` preveri, ali je trenutni element `num` večji od trenutnega največjega `max`.
    6. ` max=$num`: če`num ` je večji od `max`, `max` se posodobi z vrednostjo num.
    7. ` Končano `: Zanka `za` je zaprta.
    8. ` echo Največji element v matriki je: $max `: Končno skript natisne največjo vrednost, najdeno v matriki.
    461

    največje število

    30) Napišite skripto za izračun vsote elementov v matriki.

    #!/bin/bash

    # Deklarirajte matriko

    niz=(1 65 22 19 94)

    # Inicializirajte spremenljivko za shranjevanje vsote

    vsota=0

    # Iterirajte skozi matriko in dodajte vsak element k vsoti

    za num v ${array[@]}; narediti
    am=$((am + am))
    Končano

    # Izpiši vsoto

    echo Vsota elementov v matriki je: $sum

    Pojasnilo:

    ` #!/bin/bash `: vrstica shebang določa, da je treba skript interpretirati z lupino Bash.

    ` niz=(1 65 22 19 94) `: Niz je deklariran in inicializiran z vrednostmi.

    ` vsota=0 `:` vsota ` se inicializira na nič, da zadrži vsoto elementov.

    ` za num v ${array[@]}; narediti `:A` za ` zanka se uporablja za ponavljanje elementov matrike.

    ` am=$((am + am)) `: Znotraj zanke, vsak element ` na enem ` je dodan v ` vsota ` spremenljivka.

    ` Končano `: ` za ` zanka je zaprta.

    `echo Vsota elementov v matriki je: $sum`: Na koncu skript natisne vsoto vseh elementov v matriki.

    462

    Vsota elementov

    Izvedite več o lupinskih skriptih

    Zaključek

    Vsi geeki vemo, da je lupinski skript zelo koristen za povečanje delovne produktivnosti in prihranek časa. Torej, v tem članku smo zajeli 30 zelo uporabnih in najbolj prevarantskih primerov lupinskih skriptov . Upamo, da vam bo ta popoln vodnik o primeru lupinskega skripta pomagal razumeti vse o lupinskih skriptih.



    ).
  5. izhod 1 : Ta vrstica zapusti skript z izhodno kodo 1, kar pomeni, da je prišlo do napake.
  6. f i: To označuje konec prvega stavka if.
  7. če [! -d $imenik]; potem : Ta vrstica preveri, ali navedeni imenik ne obstaja (-d preizkusi imenik).
  8. echo Napaka: '$directory' ni veljaven imenik. : Če navedeni imenik ne obstaja, ta vrstica natisne sporočilo o napaki.
  9. izhod 1 : zapusti skript z izhodno kodo 1.
  10. biti : Označi konec drugega stavka if.
  11. cd $imenik || izhod 1 : spremeni trenutni delovni imenik v podani imenik. Če sprememba imenika ne uspe (npr. imenik ne obstaja), se skript zapre s kodo napake.
  12. za datoteko v *; narediti: jaz za datoteko v *; narediti: začne zanko, ki ponovi vse elemente v trenutnem imeniku (* se ujema z vsemi imeni datotek).
  13. if [ -f $file ]; potem : preveri, ali je trenutni element ponovitve zanke navadna datoteka (-f preizkusi navadno datoteko).
  14. novo ime=$(echo $file | tr 'A-Z' 'a-z') : Pretvori trenutno ime datoteke ($file) v male črke z uporabo ukaza tr in shrani rezultat v spremenljivko newname.
  15. [ $file != $newname ] && mv $file $newname : primerja izvirno ime datoteke z novim imenom datoteke z malimi črkami. Če sta drugačna, datoteko preimenuje z ukazom mv.
  16. biti : Označuje konec notranjega stavka if.
  17. Končano : Označuje konec zanke.

454

Opomba : Pri zagonu skripta moramo zagotoviti imenik kot argument. Tukaj smo uporabili pot trenutnega imenika home/jayeshkumar/test

27) Kako lahko uporabite aritmetične operacije znotraj lupinskega skripta?

Aritmetične operacije je mogoče izvajati znotraj lupinskega skripta z uporabo različnih vgrajenih metod. Lupina ponuja mehanizme za preproste aritmetične izračune z uporabo aritmetične razširitve, kot je:

  1. Aritmetična razširitev ($((…)))
  2. Uporaba ukaza expr
  3. Uporaba ukaza let

Tukaj je naš skript lupine, ki razlaga vse tri metode za aritmetične operacije.

#!/bin/bash
num1=10
num2=5

#Aritmetična razširitev ($((…)))

rezultat=$((num1 + num2))
echo Vsota: $rezultat

#Uporaba ukaza expr

vsota=$(izraz $num1 + $num2)
echo Vsota: $vsota

#Uporaba ukaza let

naj bo vsota = num1 + num2
echo Vsota: $vsota

Pojasnilo:

  1. `#!/bin/bash` : To je shebang, ki določa, da je treba skript tolmačiti z lupino Bash.
  2. `num1=10` in ` num2=5` : Te vrstice dodelijo vrednosti 10 in 5 spremenljivkam ` št.1 ` in ` št.2 ` oziroma.
  3. `#Aritmetična razširitev ($((…)))` : To je komentar, ki označuje začetek odseka, ki prikazuje aritmetično razširitev.
  4. `rezultat=$((num1 + num2))` : Ta vrstica uporablja aritmetično razširitev za izračun vsote ` št.1 ` in ` št.2 ` in shrani rezultat v ` rezultat ` spremenljivka.
  5. `echo Sum: $rezultat` : Ta vrstica natisne izračunano vsoto z uporabo vrednosti, shranjene v ` rezultat ` spremenljivka.
  6. `#Uporaba ukaza expr` : To je komentar, ki označuje začetek razdelka, ki prikazuje uporabo znaka ` ekspr ` ukaz za aritmetične operacije.
  7. `vsota=$(izraz $num1 + $num2)` : Ta vrstica uporablja ` ekspr ` ukaz za izračun vsote ` št.1 ` in ` št.2 ` in shrani rezultat v ` vsota ` spremenljivka. Upoštevajte, da ` ekspr Ukaz ` zahteva presledke okoli operatorjev.
  8. `echo Sum: $sum` : Ta vrstica natisne izračunano vsoto z uporabo vrednosti, shranjene v ` vsota ` spremenljivka.
  9. `#Uporaba ukaza let` : To je komentar, ki označuje začetek razdelka, ki prikazuje uporabo znaka ` pustiti ` ukaz za aritmetične operacije.
  10. `naj vsota = num1 + num2″` : Ta vrstica uporablja ` pustiti ` ukaz za izračun vsote ` št.1 ` in ` št.2 ` in rezultat dodeli ` vsota ` spremenljivka. ` pustiti Ukaz ` ne zahteva presledkov okoli operatorjev.
  11. `echo Sum: $sum` : Ta vrstica natisne izračunano vsoto z uporabo vrednosti, shranjene v ` vsota ` spremenljivka.
aritmetika

aritmetika

28) Ustvarite skript, ki preveri, ali je omrežni gostitelj dosegljiv.

Tukaj je preprost lupinski skript, ki uporablja ukaz ping za preverjanje, ali je omrežni gostitelj dosegljiv:

#!/bin/bash
gostitelj=″
če [ -z $gostitelj ]; potem
echo Uporaba:

Za vse distribucije Linuxa je lupinski skript kot čarobna palica, ki avtomatizira proces, uporabnikom prihrani čas in poveča produktivnost. Ta vadnica za skriptiranje vas bo seznanila s 25 plus primeri skriptiranja.

Toda preden preidemo na temo lupinsko skriptiranje primeri, razumejmo lupinski skript in dejanske primere uporabe lupinskega skripta.

Kaj je Shell Script?

No, lupina je a CLI ( tolmač ukazne vrstice ), ki se izvaja v besedilnem oknu, kjer lahko uporabniki upravljajo in izvajajo ukaze lupine. Po drugi strani pa postopek pisanja nabora ukazov, ki se izvajajo v sistemu Linux. Datoteka, ki vključuje takšna navodila, se imenuje bash skript.

Uporaba lupinskih skriptov

Spodaj je nekaj pogostih uporab lupinskega skripta:

  • Avtomatizacija nalog – Uporablja se lahko za avtomatizacijo ponavljajočih se nalog, kot so običajne varnostne kopije in nameščanje programske opreme.
  • Prilagajanje – Uporabite lahko lupinske skripte za oblikovanje okolja ukazne vrstice in enostavno opravljanje svoje naloge glede na potrebe.
  • Upravljanje datotek – Lupinske skripte je mogoče uporabiti tudi za upravljanje in manipulacijo datotek in imenikov, kot so premikanje, kopiranje, preimenovanje ali brisanje datotek.

Primeri lupinskih skriptov v Linuxu

1) Kaj označuje znak (#!) na začetku lupinskega skripta?

The drevo (#!) na začetku skripta označuje tolmača, ki naj se uporabi za izvedbo skripta. Sistemu pove, katera lupina ali tolmač naj interpretira ukaze skripta.

Na primer: Recimo, da imamo skript z imenom myscript.sh napisano v lupini Bash:

shebang

shebang

V tem primeru:

  • #!/bin/bash na začetku skripta pomeni, da je treba skript interpretirati z lupino Bash.
  • Ukazi echo se uporabljajo za tiskanje sporočil na terminal.

2) Kako zaženete lupinski skript iz ukazne vrstice?

Če želite zagnati lupinski skript iz ukazne vrstice, moramo slediti tem korakom:

  • Prepričajte se, da ima skriptna datoteka dovoljenja za izvedljivo uporabo ukaz chmod :
chmod +x myscript.sh>
  • Izvedite skript z njegovim imenom datoteke:
./myscript.sh>

Tukaj morate zamenjati myscrtipt.sh z imenom vašega skripta.

3) Napišite lupinski skript, ki natisne techcodeview.com na terminal.

Ustvarite ime skripta `myscript.sh` (uporabljamo ` Ker ` urejevalnik, izberete lahko poljuben urejevalnik)

vim myscript.sh>

#!/bin/bash
# Ta skript natisne techcodeview.com na terminal
echo techcodeview.com

tiskano ime

tiskano ime

Naš skript naredimo izvršljiv z uporabo `chmod +x`, nato ga izvedemo z `./myscipt.sh` in dobimo želeni rezultat techcodeview.com.

4) Pojasnite namen ukaza echo v skriptni lupini.

The ukaz echo se uporablja za prikaz besedila ali spremenljivk na terminalu. Običajno se uporablja za tiskanje sporočil, vrednosti spremenljivk in generiranje izhodnih podatkov programa.

434

ukaz echo

V tem primeru smo izvedli `echo` na terminalu neposredno, saj deluje enako znotraj skripta lupine.

5) Kako lahko dodelite vrednost spremenljivki v lupinskem skriptu?

Spremenljivkam so dodeljene vrednosti z uporabo operatorja dodeljevanja =.

Na primer:

#!/bin/bash
# Dodeljevanje vrednosti spremenljivki
ime=Jayesh
starost=21
echo $name $age

Pojasnilo:

  • Spremenljivki imena je dodeljena vrednost Jayesh.
  • Spremenljivki starosti je pripisana vrednost 21.
  • echo se uporablja za tiskanje in `$name` `$age` se uporablja za klic vrednosti, shranjene v spremenljivkah.

435

6) Napišite lupinski skript, ki kot vhod sprejme uporabniško ime in ga pozdravi.

Ustvarite ime skripta `example.sh`.

#!/bin/bash
# Vprašajte uporabnika za njegovo ime
echo Kako ti je ime?
preberi ime
# Pozdravite uporabnika
echo Pozdravljeni, $name! Lepo te je bilo srečati.

Pojasnilo:

  • #!/bin/bash: To je shebang linija. Sistemu pove, naj za izvedbo skripta uporabi tolmač Bash.
  • # Vprašajte uporabnika za njegovo ime: To je komentar. Zagotavlja kontekst o prihajajoči kodi. Tolmač ignorira komentarje.
  • echo Kako ti je ime?: Ukaz echo se uporablja za prikaz besedila v dvojnih narekovajih na terminalu.
  • preberi ime: Ukaz za branje počaka, da uporabnik vnese besedilo, in ga shrani v ime spremenljivke.
  • echo Pozdravljeni, $name! Veseli me.: Ta vrstica uporablja ukaz echo za tiskanje pozdravnega sporočila, ki vključuje vrednost spremenljivke imena, ki je bila zbrana iz uporabnikovega vnosa.

436

7) Kako dodate komentarje lupinskemu skriptu?

Komentarji v skriptni lupini se uporabljajo za zagotavljanje razlag ali konteksta kode. Tolmač jih ignorira in so namenjene samo ljudem, ki berejo scenarij. Komentarje lahko dodate s simbolom #.

#!/bin/bash
# To je komentar, ki pojasnjuje namen skripta
odmev gfg

8) Ustvarite lupinski skript, ki preveri, ali datoteka obstaja v trenutnem imeniku.

Tukaj je skript, ki preveri, ali datoteka z imenom example.txt obstaja v trenutnem imeniku:

#!/bin/bash
datoteka=primer.txt
# Preverite, ali datoteka obstaja
if [ -e $file ]; potem
echo Datoteka obstaja: $file
drugače
echo Datoteke ni mogoče najti: $file
biti

Pojasnilo:

  1. #!/bin/bash: To je shebang vrstica, ki določa tolmača (/bin/bash), ki bo uporabljen za izvajanje skripta.
  2. file=example.txt: Ta vrstica definira datoteko spremenljivke in ji dodeli vrednost example.txt. To lahko zamenjate z imenom datoteke, ki jo želite preveriti.
  3. if [ -e $file ]; potem: Ta vrstica začne stavek if. Pogoj [ -e $datoteka ] preveri, ali datoteka, določena z vrednostjo spremenljivke datoteke, obstaja. Zastavica -e se uporablja za preverjanje obstoja datoteke.
  4. echo Datoteka obstaja: $file: Če je pogoj resničen (tj. datoteka obstaja), ta vrstica natisne sporočilo, ki označuje, da datoteka obstaja, skupaj z imenom datoteke.
  5. else: Če je pogoj napačen (tj. datoteka ne obstaja), skript izvede kodo pod vejo else.
  6. echo Datoteke ni bilo mogoče najti: $file: Ta vrstica natisne sporočilo o napaki, ki označuje, da navedena datoteka ni bila najdena, skupaj z imenom datoteke.
  7. fi: Ta vrstica označuje konec stavka if.
Iskanje datoteke

Iskanje datoteke

9) Kakšna je razlika med enojnimi narekovaji (‘) in dvojnimi narekovaji () v skriptni lupini?

Enojni narekovaji (‘) in dvojni narekovaji () se uporabljajo za zapiranje nizov v skriptno lupino, vendar se obnašajo različno:

  • Enojni narekovaji: vse med enojnimi narekovaji se obravnava kot dobesedni niz. Imena spremenljivk in večina posebnih znakov niso razširjeni.
  • Dvojni narekovaji: Spremenljivke in določeni posebni znaki v dvojnih narekovajih so razširjeni. Vsebina je predmet zamenjave spremenljivke in zamenjave ukaza.

#!/bin/bash

abcd=Pozdravljeni
echo '$abcd' # Izhod: $abcd
echo $abcd # Izhod: Pozdravljeni

10) Kako lahko uporabite argumente ukazne vrstice v lupinskem skriptu?

Argumenti ukazne vrstice so vrednosti, ki se zagotovijo skriptu, ko se ta izvede. Do njih je mogoče dostopati znotraj skripta z uporabo posebnih spremenljivk, kot so $1, $2 itd., kjer $1 predstavlja prvi argument, $2 predstavlja drugi argument itd.

Na primer: Če ime našega skripta v `example.sh`

#!/bin/bash

echo Ime skripta: $0
echo Prvi argument: $1
echo Drugi argument: $2

Če zaženemo skript z `.example.sh hello_1 hello_2`, bo izpisal:

argumenti cli

argumenti cli

11) Kako uporabljate zanko for za ponavljanje po seznamu vrednosti?

Ustvarite ime skripta `example.sh`.

#!/bin/bash

sadje=(jabolko banana češnjev datum)
za sadje v ${fruits[@]}; narediti
echo Trenutno sadje: $sadje
Končano

Pojasnilo:

Vrstica `fruits=` ustvari matriko z imenom sadje s štirimi elementi: jabolko, banana, češnja in datelj.

  • za sadje v ${fruits[@]}; do: Ta vrstica začne zanko for. Tukaj je, kaj vsak del pomeni:
  • za sadje: To deklarira spremenljivko zanke, imenovano sadje. V vsaki ponovitvi zanke bo fruit vseboval vrednost trenutnega elementa iz matrike fruits.
  • ${fruits[@]}: To je razširitev matrike, ki vzame vse elemente iz matrike fruits. Sintaksa ${…} zagotavlja, da se vsak element obravnava kot ločena postavka.
  • do: Ta ključna beseda označuje začetek telesa zanke.
  • echo Trenutni sad: $fruit: Znotraj zanke ta vrstica uporablja ukaz echo za prikaz trenutne vrednosti spremenljivke zanke fruit. Za vsako sadje v nizu natisne sporočilo, kot je trenutno sadje: jabolko.
  • done: Ta ključna beseda označuje konec telesa zanke. Skriptu sporoči, da se je zanka končala.
za zanko

za zanko

12) Napišite lupinski skript, ki izračuna vsoto celih števil od 1 do N z uporabo zanke.

Ustvarite ime skripta `example.sh`.

#!/bin/bash

echo Vnesite številko (N):
preberi N
vsota=0
for (( i=1; i<=$N; i++ )); narediti
vsota=$((vsota + i))
Končano
echo Vsota celih števil od 1 do $N je: $sum

Pojasnilo:
Skript se začne tako, da vas prosi, da vnesete številko (N) z read. Ta številka bo določila, kolikokrat se bo zanka zagnala.

  1. Spremenljivka sum je inicializirana na 0. Ta spremenljivka bo sledila vsoti celih števil.
  2. Zanka for se začne z for (( i=1; i<=$N; i++ )). Ta struktura zanke se uporablja za ponavljanje niza dejanj določeno število krat, v tem primeru od 1 do vrednosti N.
  3. Znotraj zanke se zgodijo te stvari:
    • i=1 nastavi spremenljivko zanke i na 1 na začetku vsake iteracije.
    • Pogoj zanke i<=$N preveri, ali je i še vedno manjši ali enak danemu številu N.
    • Če je pogoj resničen, se telo zanke izvede.
    • sum=$((sum + i)) izračuna novo vrednost vsote tako, da ji prišteje trenutno vrednost i. To sešteje cela števila od 1 do trenutne vrednosti i.
  4. Po vsaki ponovitvi i++ poveča vrednost i za 1.
  5. Zanka se nadaljuje, dokler pogoj i<=$N ne postane napačen (ko i postane večji od N).
  6. Ko je zanka končana, skript prikaže vsoto celih števil od 1 do vnesenega števila N.

439

13) Ustvarite skript, ki išče določeno besedo v datoteki in šteje njene pojavitve.

Ustvarite ime skripta `word_count.sh`

#!/bin/bash

echo Vnesite besedo za iskanje:
preberi ciljno_besedo
echo Vnesite ime datoteke:
preberi ime datoteke
count=$(grep -o -w $target_word $filename | wc -l)
echo Beseda '$target_word' se pojavi $count-krat v '$filename'.

Pojasnilo:

  • echo Vnesite besedo za iskanje:: Ta vrstica prikaže sporočilo, ki uporabnika prosi, da vnese besedo, ki jo želi iskati v datoteki.
  • read target_word: Ta vrstica prebere vnos uporabnika in ga shrani v spremenljivko z imenom target_word.
  • echo Vnesite ime datoteke:: Ta vrstica prikaže sporočilo, ki uporabnika prosi, da vnese ime datoteke, v kateri želi iskati.
  • preberi ime datoteke: Ta vrstica prebere vnos, ki ga zagotovi uporabnik, in ga shrani v spremenljivko z imenom ime datoteke.
  • count=$(grep -o -w $target_word $filename | wc -l): Ta vrstica opravlja glavno delo skripta. Razčlenimo ga še naprej:
    • grep -o -w $target_word $filename: Ta del ukaza išče pojavitve ciljne_besede v navedenem imenu datoteke. Možnosti -o in -w zagotavljata, da se štejejo samo celotne besede.
    • |: To je cev, ki sprejme izhod prejšnjega ukaza in ga pošlje kot vhod v naslednji ukaz.
    • wc -l: Ta del ukaza uporablja ukaz wc za štetje števila vrstic v vnosu. Možnost -l posebej šteje vrstice.
    • Celoten ukaz izračuna število pojavitev ciljne_besede v datoteki in to število dodeli spremenljivki coun

441

14) Pojasnite razlike med standardnim izhodom (stdout) in standardno napako (stderr).

Glavna razlika med standardnim izhodom (stdout) in standardno napako (stderr) je naslednja:

  • Standardni izhod (stdout): To je privzeti izhodni tok, kamor gre običajni izhod ukaza. Privzeto je prikazan na terminalu. Lahko ga preusmerite v datoteko z>.
  • Standardna napaka (stderr): To je izhodni tok za sporočila o napakah in opozorila. Privzeto je prikazan tudi na terminalu. Lahko ga preusmerite v datoteko z uporabo 2>.

15) Pojasnite koncept pogojnih stavkov v skriptni lupini.

Pogojni stavki v skriptni lupini omogočajo sprejemanje odločitev in nadzor nad potekom našega skripta na podlagi določenih pogojev. Našemu skriptu omogočajo izvajanje različnih nizov ukazov, odvisno od tega, ali je določen pogoj resničen ali napačen. Primarni pogojni stavki v skriptni lupini so stavek if, stavek elif (neobvezno) in stavek else (izbirno).

Tukaj je osnovna struktura pogojnega stavka v skriptni lupini:

če [ pogoj ]; potem
# Ukazi za izvedbo, če je pogoj resničen
elif [ drug_pogoj ]; potem
# Ukazi za izvedbo, če je other_condition resničen (neobvezno)
drugače
# Ukazi za izvedbo, če nobeden od pogojev ni resničen (neobvezno)
biti

Pojasnilo:

  • [pogoj] = Ukaz, ki ovrednoti pogoj in vrne resnično (0) ali napačno (ničelno) izhodno stanje.
  • then = To je ključna beseda, ki nakazuje, da bodo ukazi, ki ji sledijo, izvedeni, če je pogoj ocenjen kot resničen.
  • elif = (okrajšava za else if) To je razdelek, ki nam omogoča, da določimo dodatne pogoje za preverjanje.
  • else = to je razdelek, ki vsebuje ukaze, ki bodo izvedeni, če nobeden od pogojev ni resničen.
  • fi = To je ključna beseda, ki označuje konec pogojnega bloka.

16) Kako berete vrstice iz datoteke znotraj lupinskega skripta?

Za brati vrstice iz datoteke znotraj lupinskega skripta, lahko uporabimo različne metode, vendar je eden od pogostih pristopov uporaba zanke while v kombinaciji z ukazom read. Takole lahko to storimo:

#!/bin/bash
file=/home/jayeshkumar/jayesh.txt
# Preverite, ali datoteka obstaja
if [ -e $file ]; potem
medtem ko IFS= preberi -r vrstico; narediti
echo Branje vrstice: $line
# Tukaj dodajte svojo logiko obdelave
končano <$file
drugače
echo Datoteke ni mogoče najti: $file
biti

Pojasnilo:

  1. #!/bin/bash: To je shebang vrstica, ki določa tolmača (/bin/bash), ki bo uporabljen za izvajanje skripta.
  2. file=/home/jayeshkumar/jayesh.txt: Ta vrstica definira datoteko spremenljivke in dodeli celotno pot do datoteke jayesh.txt v imeniku /home/jayeshkumar. Spremenite to pot, da bo ustrezala dejanski poti datoteke, ki jo želite prebrati.
  3. if [ -e $file ]; potem: Ta vrstica začne stavek if. Preveri, ali datoteka, podana s spremenljivko $file, obstaja. Zastavica -e preverja obstoj datoteke.
  4. medtem ko IFS= preberi -r vrstico; do: Ta vrstica sproži zanko while, ki bere vrstice iz datoteke.
    • IFS=: IFS (notranje ločilo polj) je nastavljeno na prazno vrednost, da ohrani presledke na začetku in na koncu.
    • read -r line: To prebere trenutno vrstico iz datoteke in jo shrani v spremenljivo vrstico.
  5. echo Prebrana vrstica: $line: Ta vrstica natisne vsebino vrstice, ki je bila prebrana iz datoteke. Spremenljivka $line vsebuje vsebino trenutne vrstice.
  6. # Tukaj dodajte svojo logiko obdelave: To je komentar mesta, kjer lahko dodate svojo logiko za obdelavo vsake vrstice. Na primer, lahko analizirate vrstico, izvlečete informacije ali izvedete določena dejanja na podlagi vsebine.
  7. done <$file: To označuje konec zanke while. < $file preusmeri vsebino datoteke, ki jo prebere zanka.
  8. else: Če datoteka ne obstaja (pogoj v stavku if je napačen), skript izvede kodo pod vejo else.
  9. echo Datoteke ni bilo mogoče najti: $file: Ta vrstica natisne sporočilo o napaki, ki nakazuje, da navedena datoteka ni bila najdena.
  10. fi: Ta vrstica označuje konec stavka if.
bralna datoteka

bralna datoteka

Tukaj smo uporabili ` pwd ` ukaz za pridobitev poti trenutnega imenika.

17) V lupinskem skriptu napišite funkcijo, ki izračuna faktorial danega števila.

Tukaj je scenarij, kiizračunaj faktorijeldanega števila.

#!/bin/bash
# Definirajte funkcijo za izračun faktoriala
izračunaj_faktorial() {
num=1$
dejstvo=1
for ((i=1; i<=num; i++)); narediti
dejstvo=$((dejstvo * i))
Končano
echo $fact
}
# Pozove uporabnika, da vnese številko
echo Vnesite številko:
preberi input_num
# Pokličite funkcijo izračun faktorja z vneseno številko
faktorski_rezultat=$(izračunaj_faktorski $input_num)
# Prikaži faktorski rezultat
echo Faktorial $input_num je: $factorial_result

Pojasnilo:

  1. Skript se začne z vrstico shebang #!/bin/bash za podajanje tolmača.
  2. Calculate_factorial() je definiran kot funkcija. Potrebuje en argument, num, ki je število, za katerega je treba izračunati faktorial.
  3. Znotraj funkcije je dejstvo inicializirano na 1. Ta spremenljivka bo shranila faktorski rezultat.
  4. Zanka for ponavlja od 1 do danega števila (num). V vsaki ponovitvi pomnoži trenutno vrednost dejstva z indeksom zanke i.
  5. Ko je zanka končana, spremenljivka dejstva vsebuje izračunani faktorial.
  6. Skript uporabnika pozove, da vnese številko z read.
  7. Funkcija Calculate_factorial se pokliče s številko, ki jo poda uporabnik, rezultat pa se shrani v spremenljivko factorial_result.
  8. Nazadnje skript prikaže izračunani faktorski rezultat.
Faktorial

Faktoriel

18) Kako ravnate s signali, kot je Ctrl+C v lupinskem skriptu?

V lupinskem skriptu lahko z ukazom trap upravljate s signali, kot je Ctrl+C (znan tudi kot SIGINT). Ctrl+C ustvari signal SIGINT, ko ga uporabnik pritisne, da prekine izvajajoči se skript ali program. Z uporabo ukaza trap lahko določite dejanja, ki naj bodo izvedena, ko je prejet določen signal. Tako ravnate s signali, kot je Ctrl+C, v lupinskem skriptu:

#!/bin/bash
pospravi() {
echo Skript prekinjen. Izvajanje čiščenja …
# Tukaj dodajte svoja dejanja čiščenja
izhod 1
}
# Nastavite past za klic funkcije čiščenja, ko prejmete Ctrl+C (SIGINT).
čiščenje pasti SIGINT
# Preostanek vašega scenarija
echo Teče …
spati 10
odmev Končano.

Ravnanje s signali je pomembno za robustnost skriptov in zagotavljanje, da elegantno obravnavajo nepričakovane prekinitve. Funkcijo čiščenja lahko prilagodite svojim posebnim potrebam, na primer zapiranje datotek, zaustavitev procesov ali beleženje podatkov, preden se skript zapre.

Pojasnilo:

  1. #!/bin/bash: Ta vrstica shebang določa tolmača, ki bo uporabljen za izvajanje skripta.
  2. cleanup() { … }: To definira funkcijo z imenom cleanup. Znotraj te funkcije lahko vključite vsa dejanja, ki jih je treba izvesti, ko je skript prekinjen, na primer zapiranje datotek, sprostitev virov ali izvajanje drugih nalog čiščenja.
  3. trap cleanup SIGINT: Ukaz trap se uporablja za nastavitev upravljalnika signalov. V tem primeru določa, da se ob prejemu signala SIGINT (Ctrl+C) izvede funkcija čiščenja.
  4. echo Running…, sleep 10, echo Finished.: To so samo vzorčni ukazi za simulacijo izvajanja skripta.

446

19) Ustvarite skript, ki preveri in odstrani podvojene vrstice v besedilni datoteki.

Tukaj je naš skript za linux, v katerem bomo odstranili podvojene vrstice iz besedilne datoteke.

#!/bin/bash
vhodna_datoteka=vhod.txt
izhodna_datoteka=izhod.txt
razvrsti $input_file | uniq> $output_file
echo Podvojene vrstice so bile uspešno odstranjene.

Pojasnilo:

  1. Skript se začne s shebangom (#!/bin/bash), kar pomeni, da je treba skript interpretirati z lupino Bash.
  2. Spremenljivka input_file je nastavljena na ime vhodne datoteke, ki vsebuje podvojene vrstice (to spremenite v svoje dejansko ime vhodne datoteke).
  3. Spremenljivka output_file je nastavljena na ime izhodne datoteke, kjer bodo odstranjeni dvojniki (to spremenite v želeno ime izhodne datoteke).
  4. Skript uporablja ukaz sort za razvrščanje vrstic v vhodni datoteki. Razvrščanje vrstic zagotavlja, da so podvojene vrstice združene skupaj.
  5. Razvrščene vrstice se nato prenesejo skozi ukaz uniq, ki odstrani zaporedne podvojene vrstice. Izhod tega procesa je preusmerjen v izhodno datoteko.
  6. Ko so dvojniki odstranjeni, skript natisne sporočilo o uspehu.
odstranjevanje podvojenih vrstic

odstranjevanje podvojenih vrstic

Tukaj uporabljamo ` mačka ` za prikaz besedila znotraj besedilne datoteke.

20) Napišite skripto, ki ustvari varno naključno geslo.

Tukaj je naš skript za ustvarjanje varnega naključnega gesla.

#!/bin/bash
# Funkcija za ustvarjanje naključnega gesla
generiraj_geslo() {
tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
}
# Pokličite funkcijo in shranite generirano geslo
geslo=$(generiraj_geslo)
echo Ustvarjeno geslo: $password

Opomba: Uporabnik lahko ustrezno spremeni dolžino gesla, tako da zamenja številko `12`.

Pojasnilo:

  1. Skript se začne s shebangom (#!/bin/bash), kar pomeni, da ga je treba interpretirati z lupino Bash.
  2. Funkcija generate_password je definirana za ustvarjanje naključnega gesla. Takole deluje:
    • tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
    • fold -w 12 razdeli filtrirane naključne podatke v vrstice s širino 12 znakov.
    • head -n 1 izbere prvo vrstico in nam dejansko poda naključno zaporedje znakov dolžine 12.
  3. Spremenljivki gesla je dodeljen rezultat klica funkcije generate_password.
  4. Na koncu se ustvarjeno geslo prikaže z odmevom.

448

21) Napišite lupinski skript, ki izračuna skupno velikost vseh datotek v imeniku.

Tukaj je lupinski skript za izračun skupne velikosti vseh datotek v imeniku.

#!/bin/bash
imenik=/pot/do/vašega/imenika
total_size=$(du -csh $directory | grep total | awk ‘{print $1}’)
echo Skupna velikost datotek v $directory: $total_size

Pojasnilo:

  1. Skript se začne z #!/bin/bash shebang, kar pomeni, da ga je treba interpretirati z lupino Bash.
  2. Spremenljivka imenika je nastavljena na pot imenika, za katerega želite izračunati skupno velikost datoteke. Zamenjajte /path/to/your/directory z dejansko potjo.
  3. Ukaz du se uporablja za oceno porabe prostora za datoteke. Uporabljene možnosti so:
    • -c: Ustvari skupno vsoto.
    • -s: Prikaži samo skupno velikost navedenega imenika.
    • -h: Velikosti tiskanja v človeku berljivem formatu (npr. KB, MB, GB).
  4. Izhod du je posredovan grep total, da filtrira vrstico, ki vsebuje skupno velikost.
  5. awk '{print $1}' se uporablja za ekstrahiranje prvega polja (skupne velikosti) iz vrstice.
  6. Izračunana skupna velikost je shranjena v spremenljivki total_size.
  7. Na koncu skript prikaže skupno velikost z odmevom.
Skupna velikost datotek

Skupna velikost datotek

Tukaj smo uporabili ` pwd ` za ogled trenutne poti imenika.

22) Pojasnite razliko med stavkoma if in elif v skriptni lupini.

Funkcija `if`Staiftement Izjava `elif`
Namen Pojasnite razliko med stavkoma if in elif v skriptni lupini. Zagotavlja alternativne pogoje za preverjanje, kdaj je začetni pogoj if napačen.
uporaba Uporablja se za začetno stanje. Uporablja se za začetnim pogojem if za preverjanje dodatnih pogojev.
število blokov Lahko ima samo en blok if. Lahko ima več blokov elif, vendar samo en blok else (neobvezno).
Izvedba Izvede blok kode, povezan s stavkom if, če je pogoj resničen. Če je pogoj napačen, se izvede blok else (če je prisoten) (izbirno). Preveri vsak pogoj elif po vrstnem redu. Če je en pogoj elif resničen, se izvede ustrezen blok kode in skript zapusti celoten pogojni blok. Če nobeden od pogojev elif ni resničen, se izvede blok else (če je prisoten).
Ugnezdene strukture Lahko se ugnezdi znotraj drugih blokov if, elif ali else. Ni ga mogoče ugnezditi znotraj drugega bloka elif, lahko pa ga uporabite znotraj bloka if ali else.

Razumejmo to s primerom.

#!/bin/bash
število=5
če [$število -gt 10]; potem
echo $število je večje od 10
drugače
echo $število ni večje od 10
biti
odmev ——–
če [$število -gt 10]; potem
echo $število je večje od 10
elif [$število -eq 10]; potem
echo $število je enako 10
drugače
echo $število je manjše od 10
biti

Pojasnilo:

V tem primeru prvi blok if preveri, ali je število večje od 10. Če ni, natisne sporočilo, ki kaže, da število ni večje od 10. Drugi blok s stavki elif zaporedoma preverja več pogojev, dokler eden od njih ni resničen. V tem primeru, ker je vrednost števila 5, bo rezultat:

razlika if_elif

razlika if_elif

23) Kako uporabljate zanko while za ponavljajoče se izvajanje ukazov?

Zanka while se uporablja v skriptni lupini za ponavljajoče se izvajanje niza ukazov, dokler je podani pogoj resničen. Zanka nadaljuje z izvajanjem ukazov, dokler pogoj ne postane false.

Tukaj je osnovna sintaksa zanke while:

medtem ko [pogoj]; narediti
# Ukazi za izvedbo
Končano

Pojasnilo:

  1. Zanka `while` se začne s ključno besedo `while`, ki ji sledi pogoj v oglatih oklepajih `[ ]`.
  2. Telo zanke, ki vsebuje ukaze, ki jih je treba izvesti, je zaprto med ključnima besedama `do` in `done`.
  3. Zanka najprej preveri stanje. Če je pogoj resničen, se izvedejo ukazi v telesu zanke. Ko se telo zanke izvede, se pogoj znova preveri in postopek se ponavlja, dokler pogoj ne postane napačen.

primer: Če želimo natisniti številke od 1 do 5

#!/bin/bash
števec=1
medtem ko [ $counter -le 5 ]; narediti
echo Številka: $števec
števec=$((števec + 1))
Končano

Pojasnilo:

  • Spremenljivka števca je nastavljena na 1.
  • Zanka while preveri, ali je vrednost števca manjša ali enaka 5. Dokler je ta pogoj resničen, se zanka nadaljuje z izvajanjem.
  • Znotraj zanke se trenutna vrednost števca natisne z odmevom.
  • Števec se poveča za 1 z uporabo izraza $((števec + 1)).
medtem ko zanka

medtem ko zanka

24) Ustvarite lupinski skript, ki najde in izpiše vse prazne datoteke v imeniku.

Skript lupine, ki ga lahko uporabite za iskanje in seznam vseh praznih datotek v imeniku z uporabo ukazov `find` in `stat`:

#!/bin/bash
imenik=$1″
if [ -z $imenik ]; potem
echo Uporaba: $0
izhod 1
biti

če [! -d $imenik]; potem
echo Napaka: '$directory' ni veljaven imenik.
izhod 1
biti
echo Prazne datoteke v $directory:
najdi $imenik -tip f -prazen

Pojasnilo:

  1. ` #!/bin/bash `: To se imenuje shebang in operacijskemu sistemu pove, naj uporabi lupino Bash za interpretacijo in izvedbo skripta.
  2. ` imenik=$1″ `: Ta vrstica dodeli prvi argument ukazne vrstice (označen z $1) spremenljivki ` imenik `.
  3. ` if [ -z $imenik ]; potem `: Ta vrstica začne stavek if, ki preveri, ali je ` imenik ` spremenljivka je prazna (-z preveri prazen niz).
  4. ` echo Uporaba: $0 `: Če je imenik prazen, ta vrstica natisne sporočilo o uporabi, kjer je ` 0 $ ` predstavlja ime skripta.
  5. ` izhod 1 `: Ta vrstica zapusti skript z izhodno kodo ` 1 `, ki označuje napako.
  6. ` biti `: Ta vrstica označuje konec ` če ` izjava.
  7. ` če [! -d $imenik]; potem `: To zažene drug stavek if za preverjanje, ali navedeni imenik obstaja (` -d ` preizkusi za imenik).
  8. ` echo Napaka: '$directory' ni veljaven imenik. `: Če navedeni imenik ne obstaja, ta vrstica natisne sporočilo o napaki.
  9. ` izhod 1 `: Zapre skript z izhodno kodo ` 1 `.
  10. ` biti `: Označuje konec drugega ` če` izjava.
  11. ` echo Prazne datoteke v $directory: `: Če je do zdaj vse veljavno, ta vrstica natisne sporočilo, ki nakazuje, da bo skript prikazal prazne datoteke v navedenem imeniku.
  12. ` najdi $imenik -tip f -prazen `: Ta vrstica uporablja ` najti ` ukaz za iskanje praznih datotek (` -prazno `) vrste običajnih datotek (` - tip f `) v podanem imeniku. Nato navede te prazne datoteke.
Iskanje praznih datotek

Iskanje praznih datotek

Opomba : Pri zagonu skripta moramo zagotoviti imenik kot argument. Tukaj smo uporabili pot trenutnega imenika home/jayeshkumar/

25) Kakšen je namen ukaza read v skriptni lupini?

Ukaz za branje v skriptni lupini omogoča, da vas skript vpraša za informacije. To je tako, kot če bi vam računalnik zastavil vprašanje in čakal na vaš odgovor. To je uporabno za skripte, ki zahtevajo, da nekaj vtipkate, ali ko mora skript delati z informacijami iz datotek. Ukaz za branje pomaga skriptu, da se ustavi in ​​počaka na tisto, kar vtipkate, nato pa lahko te podatke uporabi za več stvari v skriptu.

Sintaksa ukaza za branje:

read variable_name>

Primer : Če želimo vzeti ime kot vnos od uporabnika, da ga natisnemo.

#!/bin/bash
echo Prosimo, vnesite svoje ime:
preberi ime
echo Pozdravljeni, $name!

453

preberi nam

Če povzamemo, ukaz za branje se uporablja za zajemanje uporabniškega vnosa ali podatkov iz datotek znotraj lupinskih skriptov, zaradi česar so skripti bolj interaktivni in vsestranski.

26) Napišite lupinski skript, ki pretvori vsa imena datotek v imeniku v male črke.

Tukaj je lupinski skript, ki pretvori vsa imena datotek v imeniku v male črke.

#!/bin/bash
imenik=$1″
if [ -z $imenik ]; potem
echo Uporaba: $0
izhod 1
biti

če [! -d $imenik]; potem

echo Napaka: '$directory' ni veljaven imenik.
izhod 1
biti

cd $imenik || izhod 1

za datoteko v *; narediti
if [ -f $file ]; potem
novo ime=$(echo $file | tr 'A-Z' 'a-z')
[ $file != $newname ] && mv $file $newname
biti
Končano

Pojasnilo:

  1. #!/bin/bash : To je shebang, ki določa, da je treba skript interpretirati z lupino Bash.
  2. imenik=$1″ : Ta vrstica dodeli prvi argument ukazne vrstice imeniku spremenljivk.
  3. if [ -z $imenik ]; potem : Ta vrstica preveri, ali je spremenljivka imenika prazna (pri izvajanju skripta ni podanega argumenta).
  4. echo Uporaba: $0 : Če je imenik prazen, ta vrstica natisne sporočilo o uporabi z imenom skripta ($0).
  5. izhod 1 : Ta vrstica zapusti skript z izhodno kodo 1, kar pomeni, da je prišlo do napake.
  6. f i: To označuje konec prvega stavka if.
  7. če [! -d $imenik]; potem : Ta vrstica preveri, ali navedeni imenik ne obstaja (-d preizkusi imenik).
  8. echo Napaka: '$directory' ni veljaven imenik. : Če navedeni imenik ne obstaja, ta vrstica natisne sporočilo o napaki.
  9. izhod 1 : zapusti skript z izhodno kodo 1.
  10. biti : Označi konec drugega stavka if.
  11. cd $imenik || izhod 1 : spremeni trenutni delovni imenik v podani imenik. Če sprememba imenika ne uspe (npr. imenik ne obstaja), se skript zapre s kodo napake.
  12. za datoteko v *; narediti: jaz za datoteko v *; narediti: začne zanko, ki ponovi vse elemente v trenutnem imeniku (* se ujema z vsemi imeni datotek).
  13. if [ -f $file ]; potem : preveri, ali je trenutni element ponovitve zanke navadna datoteka (-f preizkusi navadno datoteko).
  14. novo ime=$(echo $file | tr 'A-Z' 'a-z') : Pretvori trenutno ime datoteke ($file) v male črke z uporabo ukaza tr in shrani rezultat v spremenljivko newname.
  15. [ $file != $newname ] && mv $file $newname : primerja izvirno ime datoteke z novim imenom datoteke z malimi črkami. Če sta drugačna, datoteko preimenuje z ukazom mv.
  16. biti : Označuje konec notranjega stavka if.
  17. Končano : Označuje konec zanke.

454

Opomba : Pri zagonu skripta moramo zagotoviti imenik kot argument. Tukaj smo uporabili pot trenutnega imenika home/jayeshkumar/test

27) Kako lahko uporabite aritmetične operacije znotraj lupinskega skripta?

Aritmetične operacije je mogoče izvajati znotraj lupinskega skripta z uporabo različnih vgrajenih metod. Lupina ponuja mehanizme za preproste aritmetične izračune z uporabo aritmetične razširitve, kot je:

  1. Aritmetična razširitev ($((…)))
  2. Uporaba ukaza expr
  3. Uporaba ukaza let

Tukaj je naš skript lupine, ki razlaga vse tri metode za aritmetične operacije.

#!/bin/bash
num1=10
num2=5

#Aritmetična razširitev ($((…)))

rezultat=$((num1 + num2))
echo Vsota: $rezultat

#Uporaba ukaza expr

vsota=$(izraz $num1 + $num2)
echo Vsota: $vsota

#Uporaba ukaza let

naj bo vsota = num1 + num2
echo Vsota: $vsota

Pojasnilo:

  1. `#!/bin/bash` : To je shebang, ki določa, da je treba skript tolmačiti z lupino Bash.
  2. `num1=10` in ` num2=5` : Te vrstice dodelijo vrednosti 10 in 5 spremenljivkam ` št.1 ` in ` št.2 ` oziroma.
  3. `#Aritmetična razširitev ($((…)))` : To je komentar, ki označuje začetek odseka, ki prikazuje aritmetično razširitev.
  4. `rezultat=$((num1 + num2))` : Ta vrstica uporablja aritmetično razširitev za izračun vsote ` št.1 ` in ` št.2 ` in shrani rezultat v ` rezultat ` spremenljivka.
  5. `echo Sum: $rezultat` : Ta vrstica natisne izračunano vsoto z uporabo vrednosti, shranjene v ` rezultat ` spremenljivka.
  6. `#Uporaba ukaza expr` : To je komentar, ki označuje začetek razdelka, ki prikazuje uporabo znaka ` ekspr ` ukaz za aritmetične operacije.
  7. `vsota=$(izraz $num1 + $num2)` : Ta vrstica uporablja ` ekspr ` ukaz za izračun vsote ` št.1 ` in ` št.2 ` in shrani rezultat v ` vsota ` spremenljivka. Upoštevajte, da ` ekspr Ukaz ` zahteva presledke okoli operatorjev.
  8. `echo Sum: $sum` : Ta vrstica natisne izračunano vsoto z uporabo vrednosti, shranjene v ` vsota ` spremenljivka.
  9. `#Uporaba ukaza let` : To je komentar, ki označuje začetek razdelka, ki prikazuje uporabo znaka ` pustiti ` ukaz za aritmetične operacije.
  10. `naj vsota = num1 + num2″` : Ta vrstica uporablja ` pustiti ` ukaz za izračun vsote ` št.1 ` in ` št.2 ` in rezultat dodeli ` vsota ` spremenljivka. ` pustiti Ukaz ` ne zahteva presledkov okoli operatorjev.
  11. `echo Sum: $sum` : Ta vrstica natisne izračunano vsoto z uporabo vrednosti, shranjene v ` vsota ` spremenljivka.
aritmetika

aritmetika

28) Ustvarite skript, ki preveri, ali je omrežni gostitelj dosegljiv.

Tukaj je preprost lupinski skript, ki uporablja ukaz ping za preverjanje, ali je omrežni gostitelj dosegljiv:

#!/bin/bash
gostitelj=$1″
če [ -z $gostitelj ]; potem
echo Uporaba: $0
izhod 1
biti
ping -c 4 $gostitelj

če [ $? -eq 0]; potem
echo $host je dosegljiv.
drugače
echo $host ni dosegljiv.
biti

Pojasnilo:

  1. Kot argument vzame ime gostitelja ali naslov IP in preveri, ali je argument naveden.
  2. Če ni podanega nobenega argumenta, prikaže sporočilo o uporabi in se zapre.
  3. Uporablja ukaz ping z možnostjo -c 4 za pošiljanje štirih zahtev za odmev ICMP navedenemu gostitelju.
  4. Ko se zažene ukaz ping, preveri stanje izhoda ($?). Če je status izhoda 0, to pomeni, da je gostitelj dosegljiv in skript natisne sporočilo o uspehu. V nasprotnem primeru natisne sporočilo o napaki.

456

Opomba : Ime gostitelja moramo zagotoviti kot argument pri zagonu skripta. Tukaj smo uporabili google.com

29) Napišite lupinski skript za iskanje največjega elementa v nizu:

Tukaj je lupinski skript za iskanje največjega elementa v nizu.

#!/bin/bash
# Deklarirajte matriko
niz=(3 56 24 89 67)

# Inicializirajte spremenljivko za shranjevanje največje vrednosti, začenši s prvim elementom

max=${matrika[0]}

# Iteracija skozi matriko

za num v ${array[@]}; narediti

# Primerjajte vsak element s trenutnim maksimumom

if ((num> max)); potem
največ=$št
biti
Končano

# Natisnite največjo vrednost

echo Največji element v matriki je: $max

Pojasnilo:

  1. ` #!/bin/bash `: vrstica shebang določa, da je treba skript interpretirati z lupino Bash.
  2. ` niz=(3 56 24 89 67) `: Niz je deklariran in inicializiran z vrednostmi.
  3. ` max=${matrika[0]} `: `max` se inicializira s prvim elementom matrike.
  4. ` za num v ${array[@]}; narediti `: zanka `za` se uporablja za ponavljanje elementov matrike.
  5. ` if ((num> max)); potem `: Stavek `if` preveri, ali je trenutni element `num` večji od trenutnega največjega `max`.
  6. ` max=$num`: če`num ` je večji od `max`, `max` se posodobi z vrednostjo num.
  7. ` Končano `: Zanka `za` je zaprta.
  8. ` echo Največji element v matriki je: $max `: Končno skript natisne največjo vrednost, najdeno v matriki.
461

največje število

30) Napišite skripto za izračun vsote elementov v matriki.

#!/bin/bash

# Deklarirajte matriko

niz=(1 65 22 19 94)

# Inicializirajte spremenljivko za shranjevanje vsote

vsota=0

# Iterirajte skozi matriko in dodajte vsak element k vsoti

za num v ${array[@]}; narediti
am=$((am + am))
Končano

# Izpiši vsoto

echo Vsota elementov v matriki je: $sum

Pojasnilo:

` #!/bin/bash `: vrstica shebang določa, da je treba skript interpretirati z lupino Bash.

` niz=(1 65 22 19 94) `: Niz je deklariran in inicializiran z vrednostmi.

` vsota=0 `:` vsota ` se inicializira na nič, da zadrži vsoto elementov.

` za num v ${array[@]}; narediti `:A` za ` zanka se uporablja za ponavljanje elementov matrike.

` am=$((am + am)) `: Znotraj zanke, vsak element ` na enem ` je dodan v ` vsota ` spremenljivka.

` Končano `: ` za ` zanka je zaprta.

`echo Vsota elementov v matriki je: $sum`: Na koncu skript natisne vsoto vseh elementov v matriki.

462

Vsota elementov

Izvedite več o lupinskih skriptih

Zaključek

Vsi geeki vemo, da je lupinski skript zelo koristen za povečanje delovne produktivnosti in prihranek časa. Torej, v tem članku smo zajeli 30 zelo uporabnih in najbolj prevarantskih primerov lupinskih skriptov . Upamo, da vam bo ta popoln vodnik o primeru lupinskega skripta pomagal razumeti vse o lupinskih skriptih.




izhod 1
biti
ping -c 4 $gostitelj

če [ $? -eq 0]; potem
echo $host je dosegljiv.
drugače
echo $host ni dosegljiv.
biti

Pojasnilo:

  1. Kot argument vzame ime gostitelja ali naslov IP in preveri, ali je argument naveden.
  2. Če ni podanega nobenega argumenta, prikaže sporočilo o uporabi in se zapre.
  3. Uporablja ukaz ping z možnostjo -c 4 za pošiljanje štirih zahtev za odmev ICMP navedenemu gostitelju.
  4. Ko se zažene ukaz ping, preveri stanje izhoda ($?). Če je status izhoda 0, to pomeni, da je gostitelj dosegljiv in skript natisne sporočilo o uspehu. V nasprotnem primeru natisne sporočilo o napaki.

456

Opomba : Ime gostitelja moramo zagotoviti kot argument pri zagonu skripta. Tukaj smo uporabili google.com

29) Napišite lupinski skript za iskanje največjega elementa v nizu:

Tukaj je lupinski skript za iskanje največjega elementa v nizu.

#!/bin/bash
# Deklarirajte matriko
niz=(3 56 24 89 67)

# Inicializirajte spremenljivko za shranjevanje največje vrednosti, začenši s prvim elementom

max=${matrika[0]}

# Iteracija skozi matriko

za num v ${array[@]}; narediti

# Primerjajte vsak element s trenutnim maksimumom

if ((num> max)); potem
največ=$št
biti
Končano

# Natisnite največjo vrednost

echo Največji element v matriki je: $max

'abc's v številkah'

Pojasnilo:

  1. ` #!/bin/bash `: vrstica shebang določa, da je treba skript interpretirati z lupino Bash.
  2. ` niz=(3 56 24 89 67) `: Niz je deklariran in inicializiran z vrednostmi.
  3. ` max=${matrika[0]} `: `max` se inicializira s prvim elementom matrike.
  4. ` za num v ${array[@]}; narediti `: zanka `za` se uporablja za ponavljanje elementov matrike.
  5. ` if ((num> max)); potem `: Stavek `if` preveri, ali je trenutni element `num` večji od trenutnega največjega `max`.
  6. ` max=$num`: če`num ` je večji od `max`, `max` se posodobi z vrednostjo num.
  7. ` Končano `: Zanka `za` je zaprta.
  8. ` echo Največji element v matriki je: $max `: Končno skript natisne največjo vrednost, najdeno v matriki.
461

največje število

30) Napišite skripto za izračun vsote elementov v matriki.

#!/bin/bash

# Deklarirajte matriko

niz=(1 65 22 19 94)

# Inicializirajte spremenljivko za shranjevanje vsote

vsota=0

# Iterirajte skozi matriko in dodajte vsak element k vsoti

za num v ${array[@]}; narediti
am=$((am + am))
Končano

# Izpiši vsoto

echo Vsota elementov v matriki je: $sum

Pojasnilo:

` #!/bin/bash `: vrstica shebang določa, da je treba skript interpretirati z lupino Bash.

` niz=(1 65 22 19 94) `: Niz je deklariran in inicializiran z vrednostmi.

` vsota=0 `:` vsota ` se inicializira na nič, da zadrži vsoto elementov.

` za num v ${array[@]}; narediti `:A` za ` zanka se uporablja za ponavljanje elementov matrike.

` am=$((am + am)) `: Znotraj zanke, vsak element ` na enem ` je dodan v ` vsota ` spremenljivka.

` Končano `: ` za ` zanka je zaprta.

`echo Vsota elementov v matriki je: $sum`: Na koncu skript natisne vsoto vseh elementov v matriki.

462

Vsota elementov

Izvedite več o lupinskih skriptih

Zaključek

Vsi geeki vemo, da je lupinski skript zelo koristen za povečanje delovne produktivnosti in prihranek časa. Torej, v tem članku smo zajeli 30 zelo uporabnih in najbolj prevarantskih primerov lupinskih skriptov . Upamo, da vam bo ta popoln vodnik o primeru lupinskega skripta pomagal razumeti vse o lupinskih skriptih.