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
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
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.

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.
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.
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:
- #!/bin/bash: To je shebang vrstica, ki določa tolmača (/bin/bash), ki bo uporabljen za izvajanje skripta.
- file=example.txt: Ta vrstica definira datoteko spremenljivke in ji dodeli vrednost example.txt. To lahko zamenjate z imenom datoteke, ki jo želite preveriti.
- 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.
- 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.
- else: Če je pogoj napačen (tj. datoteka ne obstaja), skript izvede kodo pod vejo else.
- 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.
- fi: Ta vrstica označuje konec stavka if.

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
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.comtiskano 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.
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 $agePojasnilo:
- 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.
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.
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 gfg8) 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
bitiPojasnilo:
- #!/bin/bash: To je shebang vrstica, ki določa tolmača (/bin/bash), ki bo uporabljen za izvajanje skripta.
- file=example.txt: Ta vrstica definira datoteko spremenljivke in ji dodeli vrednost example.txt. To lahko zamenjate z imenom datoteke, ki jo želite preveriti.
- 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.
- 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.
- else: Če je pogoj napačen (tj. datoteka ne obstaja), skript izvede kodo pod vejo else.
- 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.
- fi: Ta vrstica označuje konec stavka if.
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: Pozdravljeni10) 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
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čanoPojasnilo:
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
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: $sumPojasnilo:
Skript se začne tako, da vas prosi, da vnesete številko (N) z read. Ta številka bo določila, kolikokrat se bo zanka zagnala.
- Spremenljivka sum je inicializirana na 0. Ta spremenljivka bo sledila vsoti celih števil.
- 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.
- 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.
- Po vsaki ponovitvi i++ poveča vrednost i za 1.
- Zanka se nadaljuje, dokler pogoj i<=$N ne postane napačen (ko i postane večji od N).
- Ko je zanka končana, skript prikaže vsoto celih števil od 1 do vnesenega števila N.
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
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)
bitiPojasnilo:
- [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
bitiPojasnilo:
- #!/bin/bash: To je shebang vrstica, ki določa tolmača (/bin/bash), ki bo uporabljen za izvajanje skripta.
- 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.
- if [ -e $file ]; potem: Ta vrstica začne stavek if. Preveri, ali datoteka, podana s spremenljivko $file, obstaja. Zastavica -e preverja obstoj datoteke.
- 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.
- echo Prebrana vrstica: $line: Ta vrstica natisne vsebino vrstice, ki je bila prebrana iz datoteke. Spremenljivka $line vsebuje vsebino trenutne vrstice.
- # 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.
- done <$file: To označuje konec zanke while. < $file preusmeri vsebino datoteke, ki jo prebere zanka.
- else: Če datoteka ne obstaja (pogoj v stavku if je napačen), skript izvede kodo pod vejo else.
- echo Datoteke ni bilo mogoče najti: $file: Ta vrstica natisne sporočilo o napaki, ki nakazuje, da navedena datoteka ni bila najdena.
- fi: Ta vrstica označuje konec stavka if.
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_resultPojasnilo:
- Skript se začne z vrstico shebang #!/bin/bash za podajanje tolmača.
- Calculate_factorial() je definiran kot funkcija. Potrebuje en argument, num, ki je število, za katerega je treba izračunati faktorial.
- Znotraj funkcije je dejstvo inicializirano na 1. Ta spremenljivka bo shranila faktorski rezultat.
- Zanka for ponavlja od 1 do danega števila (num). V vsaki ponovitvi pomnoži trenutno vrednost dejstva z indeksom zanke i.
- Ko je zanka končana, spremenljivka dejstva vsebuje izračunani faktorial.
- Skript uporabnika pozove, da vnese številko z read.
- Funkcija Calculate_factorial se pokliče s številko, ki jo poda uporabnik, rezultat pa se shrani v spremenljivko factorial_result.
- Nazadnje skript prikaže izračunani faktorski rezultat.
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:
- #!/bin/bash: Ta vrstica shebang določa tolmača, ki bo uporabljen za izvajanje skripta.
- 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.
- 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.
- echo Running…, sleep 10, echo Finished.: To so samo vzorčni ukazi za simulacijo izvajanja skripta.
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:
- Skript se začne s shebangom (#!/bin/bash), kar pomeni, da je treba skript interpretirati z lupino Bash.
- Spremenljivka input_file je nastavljena na ime vhodne datoteke, ki vsebuje podvojene vrstice (to spremenite v svoje dejansko ime vhodne datoteke).
- Spremenljivka output_file je nastavljena na ime izhodne datoteke, kjer bodo odstranjeni dvojniki (to spremenite v želeno ime izhodne datoteke).
- Skript uporablja ukaz sort za razvrščanje vrstic v vhodni datoteki. Razvrščanje vrstic zagotavlja, da so podvojene vrstice združene skupaj.
- Razvrščene vrstice se nato prenesejo skozi ukaz uniq, ki odstrani zaporedne podvojene vrstice. Izhod tega procesa je preusmerjen v izhodno datoteko.
- Ko so dvojniki odstranjeni, skript natisne sporočilo o uspehu.
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: $passwordOpomba: Uporabnik lahko ustrezno spremeni dolžino gesla, tako da zamenja številko `12`.
Pojasnilo:
- Skript se začne s shebangom (#!/bin/bash), kar pomeni, da ga je treba interpretirati z lupino Bash.
- 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.
- Spremenljivki gesla je dodeljen rezultat klica funkcije generate_password.
- Na koncu se ustvarjeno geslo prikaže z odmevom.
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_sizePojasnilo:
- Skript se začne z #!/bin/bash shebang, kar pomeni, da ga je treba interpretirati z lupino Bash.
- Spremenljivka imenika je nastavljena na pot imenika, za katerega želite izračunati skupno velikost datoteke. Zamenjajte /path/to/your/directory z dejansko potjo.
- 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).
- Izhod du je posredovan grep total, da filtrira vrstico, ki vsebuje skupno velikost.
- awk '{print $1}' se uporablja za ekstrahiranje prvega polja (skupne velikosti) iz vrstice.
- Izračunana skupna velikost je shranjena v spremenljivki total_size.
- Na koncu skript prikaže skupno velikost z odmevom.
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
bitiPojasnilo:
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
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čanoPojasnilo:
- Zanka `while` se začne s ključno besedo `while`, ki ji sledi pogoj v oglatih oklepajih `[ ]`.
- Telo zanke, ki vsebuje ukaze, ki jih je treba izvesti, je zaprto med ključnima besedama `do` in `done`.
- 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čanoPojasnilo:
- 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
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 -prazenPojasnilo:
- ` #!/bin/bash `: To se imenuje shebang in operacijskemu sistemu pove, naj uporabi lupino Bash za interpretacijo in izvedbo skripta.
- ` imenik=$1″ `: Ta vrstica dodeli prvi argument ukazne vrstice (označen z $1) spremenljivki ` imenik `.
- ` if [ -z $imenik ]; potem `: Ta vrstica začne stavek if, ki preveri, ali je ` imenik ` spremenljivka je prazna (-z preveri prazen niz).
- ` echo Uporaba: $0 `: Če je imenik prazen, ta vrstica natisne sporočilo o uporabi, kjer je ` 0 $ ` predstavlja ime skripta.
- ` izhod 1 `: Ta vrstica zapusti skript z izhodno kodo ` 1 `, ki označuje napako.
- ` biti `: Ta vrstica označuje konec ` če ` izjava.
- ` če [! -d $imenik]; potem `: To zažene drug stavek if za preverjanje, ali navedeni imenik obstaja (` -d ` preizkusi za imenik).
- ` echo Napaka: '$directory' ni veljaven imenik. `: Če navedeni imenik ne obstaja, ta vrstica natisne sporočilo o napaki.
- ` izhod 1 `: Zapre skript z izhodno kodo ` 1 `.
- ` biti `: Označuje konec drugega ` če` izjava.
- ` 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.
- ` 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
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!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
biticd $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čanoPojasnilo:
- #!/bin/bash : To je shebang, ki določa, da je treba skript interpretirati z lupino Bash.
- imenik=$1″ : Ta vrstica dodeli prvi argument ukazne vrstice imeniku spremenljivk.
- if [ -z $imenik ]; potem : Ta vrstica preveri, ali je spremenljivka imenika prazna (pri izvajanju skripta ni podanega argumenta).
- echo Uporaba: $0 : Če je imenik prazen, ta vrstica natisne sporočilo o uporabi z imenom skripta ($0).
- izhod 1 : Ta vrstica zapusti skript z izhodno kodo 1, kar pomeni, da je prišlo do napake.
- f i: To označuje konec prvega stavka if.
- če [! -d $imenik]; potem : Ta vrstica preveri, ali navedeni imenik ne obstaja (-d preizkusi imenik).
- echo Napaka: '$directory' ni veljaven imenik. : Če navedeni imenik ne obstaja, ta vrstica natisne sporočilo o napaki.
- izhod 1 : zapusti skript z izhodno kodo 1.
- biti : Označi konec drugega stavka if.
- 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.
- 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).
- if [ -f $file ]; potem : preveri, ali je trenutni element ponovitve zanke navadna datoteka (-f preizkusi navadno datoteko).
- 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.
- [ $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.
- biti : Označuje konec notranjega stavka if.
- Končano : Označuje konec zanke.
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:
- Aritmetična razširitev ($((…)))
- Uporaba ukaza expr
- 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: $vsotaPojasnilo:
- `#!/bin/bash` : To je shebang, ki določa, da je treba skript tolmačiti z lupino Bash.
- `num1=10` in ` num2=5` : Te vrstice dodelijo vrednosti 10 in 5 spremenljivkam ` št.1 ` in ` št.2 ` oziroma.
- `#Aritmetična razširitev ($((…)))` : To je komentar, ki označuje začetek odseka, ki prikazuje aritmetično razširitev.
- `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.
- `echo Sum: $rezultat` : Ta vrstica natisne izračunano vsoto z uporabo vrednosti, shranjene v ` rezultat ` spremenljivka.
- `#Uporaba ukaza expr` : To je komentar, ki označuje začetek razdelka, ki prikazuje uporabo znaka ` ekspr ` ukaz za aritmetične operacije.
- `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.
- `echo Sum: $sum` : Ta vrstica natisne izračunano vsoto z uporabo vrednosti, shranjene v ` vsota ` spremenljivka.
- `#Uporaba ukaza let` : To je komentar, ki označuje začetek razdelka, ki prikazuje uporabo znaka ` pustiti ` ukaz za aritmetične operacije.
- `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.
- `echo Sum: $sum` : Ta vrstica natisne izračunano vsoto z uporabo vrednosti, shranjene v ` vsota ` spremenljivka.
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.
bitiPojasnilo:
- Kot argument vzame ime gostitelja ali naslov IP in preveri, ali je argument naveden.
- Če ni podanega nobenega argumenta, prikaže sporočilo o uporabi in se zapre.
- Uporablja ukaz ping z možnostjo -c 4 za pošiljanje štirih zahtev za odmev ICMP navedenemu gostitelju.
- 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.
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:
- ` #!/bin/bash `: vrstica shebang določa, da je treba skript interpretirati z lupino Bash.
- ` niz=(3 56 24 89 67) `: Niz je deklariran in inicializiran z vrednostmi.
- ` max=${matrika[0]} `: `max` se inicializira s prvim elementom matrike.
- ` za num v ${array[@]}; narediti `: zanka `za` se uporablja za ponavljanje elementov matrike.
- ` if ((num> max)); potem `: Stavek `if` preveri, ali je trenutni element `num` večji od trenutnega največjega `max`.
- ` max=$num`: če`num ` je večji od `max`, `max` se posodobi z vrednostjo num.
- ` Končano `: Zanka `za` je zaprta.
- ` echo Največji element v matriki je: $max `: Končno skript natisne največjo vrednost, najdeno v matriki.
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.
Vsota elementov
Izvedite več o lupinskih skriptih
- Razlika med lupino in jedrom
- Razlika med Bind Shell in Reverse Shell
- Uvod v lupino Linux in skriptno lupino
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
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
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.
- Spremenljivka sum je inicializirana na 0. Ta spremenljivka bo sledila vsoti celih števil.
- 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.
- 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.
- Po vsaki ponovitvi i++ poveča vrednost i za 1.
- Zanka se nadaljuje, dokler pogoj i<=$N ne postane napačen (ko i postane večji od N).
- Ko je zanka končana, skript prikaže vsoto celih števil od 1 do vnesenega števila N.
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
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:
- #!/bin/bash: To je shebang vrstica, ki določa tolmača (/bin/bash), ki bo uporabljen za izvajanje skripta.
- 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.
- if [ -e $file ]; potem: Ta vrstica začne stavek if. Preveri, ali datoteka, podana s spremenljivko $file, obstaja. Zastavica -e preverja obstoj datoteke.
- 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.
- echo Prebrana vrstica: $line: Ta vrstica natisne vsebino vrstice, ki je bila prebrana iz datoteke. Spremenljivka $line vsebuje vsebino trenutne vrstice.
- # 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.
- done <$file: To označuje konec zanke while. < $file preusmeri vsebino datoteke, ki jo prebere zanka.
- else: Če datoteka ne obstaja (pogoj v stavku if je napačen), skript izvede kodo pod vejo else.
- echo Datoteke ni bilo mogoče najti: $file: Ta vrstica natisne sporočilo o napaki, ki nakazuje, da navedena datoteka ni bila najdena.
- fi: Ta vrstica označuje konec stavka if.

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

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:
- #!/bin/bash: Ta vrstica shebang določa tolmača, ki bo uporabljen za izvajanje skripta.
- 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.
- 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.
- echo Running…, sleep 10, echo Finished.: To so samo vzorčni ukazi za simulacijo izvajanja skripta.
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:
- Skript se začne s shebangom (#!/bin/bash), kar pomeni, da je treba skript interpretirati z lupino Bash.
- Spremenljivka input_file je nastavljena na ime vhodne datoteke, ki vsebuje podvojene vrstice (to spremenite v svoje dejansko ime vhodne datoteke).
- Spremenljivka output_file je nastavljena na ime izhodne datoteke, kjer bodo odstranjeni dvojniki (to spremenite v želeno ime izhodne datoteke).
- Skript uporablja ukaz sort za razvrščanje vrstic v vhodni datoteki. Razvrščanje vrstic zagotavlja, da so podvojene vrstice združene skupaj.
- Razvrščene vrstice se nato prenesejo skozi ukaz uniq, ki odstrani zaporedne podvojene vrstice. Izhod tega procesa je preusmerjen v izhodno datoteko.
- Ko so dvojniki odstranjeni, skript natisne sporočilo o uspehu.

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:
- Skript se začne s shebangom (#!/bin/bash), kar pomeni, da ga je treba interpretirati z lupino Bash.
- 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.
- Spremenljivki gesla je dodeljen rezultat klica funkcije generate_password.
- Na koncu se ustvarjeno geslo prikaže z odmevom.
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:
- Skript se začne z #!/bin/bash shebang, kar pomeni, da ga je treba interpretirati z lupino Bash.
- Spremenljivka imenika je nastavljena na pot imenika, za katerega želite izračunati skupno velikost datoteke. Zamenjajte /path/to/your/directory z dejansko potjo.
- 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).
- Izhod du je posredovan grep total, da filtrira vrstico, ki vsebuje skupno velikost.
- awk '{print }' se uporablja za ekstrahiranje prvega polja (skupne velikosti) iz vrstice.
- Izračunana skupna velikost je shranjena v spremenljivki total_size.
- Na koncu skript prikaže skupno velikost z odmevom.

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
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:
- Zanka `while` se začne s ključno besedo `while`, ki ji sledi pogoj v oglatih oklepajih `[ ]`.
- Telo zanke, ki vsebuje ukaze, ki jih je treba izvesti, je zaprto med ključnima besedama `do` in `done`.
- 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
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
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.comtiskano 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.
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 $agePojasnilo:
- 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.
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.
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 gfg8) 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
bitiPojasnilo:
- #!/bin/bash: To je shebang vrstica, ki določa tolmača (/bin/bash), ki bo uporabljen za izvajanje skripta.
- file=example.txt: Ta vrstica definira datoteko spremenljivke in ji dodeli vrednost example.txt. To lahko zamenjate z imenom datoteke, ki jo želite preveriti.
- 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.
- 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.
- else: Če je pogoj napačen (tj. datoteka ne obstaja), skript izvede kodo pod vejo else.
- 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.
- fi: Ta vrstica označuje konec stavka if.
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: Pozdravljeni10) 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
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čanoPojasnilo:
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
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: $sumPojasnilo:
Skript se začne tako, da vas prosi, da vnesete številko (N) z read. Ta številka bo določila, kolikokrat se bo zanka zagnala.
- Spremenljivka sum je inicializirana na 0. Ta spremenljivka bo sledila vsoti celih števil.
- 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.
- 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.
- Po vsaki ponovitvi i++ poveča vrednost i za 1.
- Zanka se nadaljuje, dokler pogoj i<=$N ne postane napačen (ko i postane večji od N).
- Ko je zanka končana, skript prikaže vsoto celih števil od 1 do vnesenega števila N.
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
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)
bitiPojasnilo:
- [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
bitiPojasnilo:
- #!/bin/bash: To je shebang vrstica, ki določa tolmača (/bin/bash), ki bo uporabljen za izvajanje skripta.
- 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.
- if [ -e $file ]; potem: Ta vrstica začne stavek if. Preveri, ali datoteka, podana s spremenljivko $file, obstaja. Zastavica -e preverja obstoj datoteke.
- 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.
- echo Prebrana vrstica: $line: Ta vrstica natisne vsebino vrstice, ki je bila prebrana iz datoteke. Spremenljivka $line vsebuje vsebino trenutne vrstice.
- # 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.
- done <$file: To označuje konec zanke while. < $file preusmeri vsebino datoteke, ki jo prebere zanka.
- else: Če datoteka ne obstaja (pogoj v stavku if je napačen), skript izvede kodo pod vejo else.
- echo Datoteke ni bilo mogoče najti: $file: Ta vrstica natisne sporočilo o napaki, ki nakazuje, da navedena datoteka ni bila najdena.
- fi: Ta vrstica označuje konec stavka if.
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_resultPojasnilo:
- Skript se začne z vrstico shebang #!/bin/bash za podajanje tolmača.
- Calculate_factorial() je definiran kot funkcija. Potrebuje en argument, num, ki je število, za katerega je treba izračunati faktorial.
- Znotraj funkcije je dejstvo inicializirano na 1. Ta spremenljivka bo shranila faktorski rezultat.
- Zanka for ponavlja od 1 do danega števila (num). V vsaki ponovitvi pomnoži trenutno vrednost dejstva z indeksom zanke i.
- Ko je zanka končana, spremenljivka dejstva vsebuje izračunani faktorial.
- Skript uporabnika pozove, da vnese številko z read.
- Funkcija Calculate_factorial se pokliče s številko, ki jo poda uporabnik, rezultat pa se shrani v spremenljivko factorial_result.
- Nazadnje skript prikaže izračunani faktorski rezultat.
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:
- #!/bin/bash: Ta vrstica shebang določa tolmača, ki bo uporabljen za izvajanje skripta.
- 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.
- 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.
- echo Running…, sleep 10, echo Finished.: To so samo vzorčni ukazi za simulacijo izvajanja skripta.
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:
- Skript se začne s shebangom (#!/bin/bash), kar pomeni, da je treba skript interpretirati z lupino Bash.
- Spremenljivka input_file je nastavljena na ime vhodne datoteke, ki vsebuje podvojene vrstice (to spremenite v svoje dejansko ime vhodne datoteke).
- Spremenljivka output_file je nastavljena na ime izhodne datoteke, kjer bodo odstranjeni dvojniki (to spremenite v želeno ime izhodne datoteke).
- Skript uporablja ukaz sort za razvrščanje vrstic v vhodni datoteki. Razvrščanje vrstic zagotavlja, da so podvojene vrstice združene skupaj.
- Razvrščene vrstice se nato prenesejo skozi ukaz uniq, ki odstrani zaporedne podvojene vrstice. Izhod tega procesa je preusmerjen v izhodno datoteko.
- Ko so dvojniki odstranjeni, skript natisne sporočilo o uspehu.
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: $passwordOpomba: Uporabnik lahko ustrezno spremeni dolžino gesla, tako da zamenja številko `12`.
Pojasnilo:
- Skript se začne s shebangom (#!/bin/bash), kar pomeni, da ga je treba interpretirati z lupino Bash.
- 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.
- Spremenljivki gesla je dodeljen rezultat klica funkcije generate_password.
- Na koncu se ustvarjeno geslo prikaže z odmevom.
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_sizePojasnilo:
- Skript se začne z #!/bin/bash shebang, kar pomeni, da ga je treba interpretirati z lupino Bash.
- Spremenljivka imenika je nastavljena na pot imenika, za katerega želite izračunati skupno velikost datoteke. Zamenjajte /path/to/your/directory z dejansko potjo.
- 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).
- Izhod du je posredovan grep total, da filtrira vrstico, ki vsebuje skupno velikost.
- awk '{print $1}' se uporablja za ekstrahiranje prvega polja (skupne velikosti) iz vrstice.
- Izračunana skupna velikost je shranjena v spremenljivki total_size.
- Na koncu skript prikaže skupno velikost z odmevom.
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
bitiPojasnilo:
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
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čanoPojasnilo:
- Zanka `while` se začne s ključno besedo `while`, ki ji sledi pogoj v oglatih oklepajih `[ ]`.
- Telo zanke, ki vsebuje ukaze, ki jih je treba izvesti, je zaprto med ključnima besedama `do` in `done`.
- 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čanoPojasnilo:
- 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
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 -prazenPojasnilo:
- ` #!/bin/bash `: To se imenuje shebang in operacijskemu sistemu pove, naj uporabi lupino Bash za interpretacijo in izvedbo skripta.
- ` imenik=$1″ `: Ta vrstica dodeli prvi argument ukazne vrstice (označen z $1) spremenljivki ` imenik `.
- ` if [ -z $imenik ]; potem `: Ta vrstica začne stavek if, ki preveri, ali je ` imenik ` spremenljivka je prazna (-z preveri prazen niz).
- ` echo Uporaba: $0 `: Če je imenik prazen, ta vrstica natisne sporočilo o uporabi, kjer je ` 0 $ ` predstavlja ime skripta.
- ` izhod 1 `: Ta vrstica zapusti skript z izhodno kodo ` 1 `, ki označuje napako.
- ` biti `: Ta vrstica označuje konec ` če ` izjava.
- ` če [! -d $imenik]; potem `: To zažene drug stavek if za preverjanje, ali navedeni imenik obstaja (` -d ` preizkusi za imenik).
- ` echo Napaka: '$directory' ni veljaven imenik. `: Če navedeni imenik ne obstaja, ta vrstica natisne sporočilo o napaki.
- ` izhod 1 `: Zapre skript z izhodno kodo ` 1 `.
- ` biti `: Označuje konec drugega ` če` izjava.
- ` 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.
- ` 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
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!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
biticd $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čanoPojasnilo:
- #!/bin/bash : To je shebang, ki določa, da je treba skript interpretirati z lupino Bash.
- imenik=$1″ : Ta vrstica dodeli prvi argument ukazne vrstice imeniku spremenljivk.
- if [ -z $imenik ]; potem : Ta vrstica preveri, ali je spremenljivka imenika prazna (pri izvajanju skripta ni podanega argumenta).
- echo Uporaba: $0 : Če je imenik prazen, ta vrstica natisne sporočilo o uporabi z imenom skripta ($0).
- izhod 1 : Ta vrstica zapusti skript z izhodno kodo 1, kar pomeni, da je prišlo do napake.
- f i: To označuje konec prvega stavka if.
- če [! -d $imenik]; potem : Ta vrstica preveri, ali navedeni imenik ne obstaja (-d preizkusi imenik).
- echo Napaka: '$directory' ni veljaven imenik. : Če navedeni imenik ne obstaja, ta vrstica natisne sporočilo o napaki.
- izhod 1 : zapusti skript z izhodno kodo 1.
- biti : Označi konec drugega stavka if.
- 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.
- 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).
- if [ -f $file ]; potem : preveri, ali je trenutni element ponovitve zanke navadna datoteka (-f preizkusi navadno datoteko).
- 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.
- [ $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.
- biti : Označuje konec notranjega stavka if.
- Končano : Označuje konec zanke.
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:
- Aritmetična razširitev ($((…)))
- Uporaba ukaza expr
- 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: $vsotaPojasnilo:
- `#!/bin/bash` : To je shebang, ki določa, da je treba skript tolmačiti z lupino Bash.
- `num1=10` in ` num2=5` : Te vrstice dodelijo vrednosti 10 in 5 spremenljivkam ` št.1 ` in ` št.2 ` oziroma.
- `#Aritmetična razširitev ($((…)))` : To je komentar, ki označuje začetek odseka, ki prikazuje aritmetično razširitev.
- `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.
- `echo Sum: $rezultat` : Ta vrstica natisne izračunano vsoto z uporabo vrednosti, shranjene v ` rezultat ` spremenljivka.
- `#Uporaba ukaza expr` : To je komentar, ki označuje začetek razdelka, ki prikazuje uporabo znaka ` ekspr ` ukaz za aritmetične operacije.
- `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.
- `echo Sum: $sum` : Ta vrstica natisne izračunano vsoto z uporabo vrednosti, shranjene v ` vsota ` spremenljivka.
- `#Uporaba ukaza let` : To je komentar, ki označuje začetek razdelka, ki prikazuje uporabo znaka ` pustiti ` ukaz za aritmetične operacije.
- `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.
- `echo Sum: $sum` : Ta vrstica natisne izračunano vsoto z uporabo vrednosti, shranjene v ` vsota ` spremenljivka.
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.
bitiPojasnilo:
- Kot argument vzame ime gostitelja ali naslov IP in preveri, ali je argument naveden.
- Če ni podanega nobenega argumenta, prikaže sporočilo o uporabi in se zapre.
- Uporablja ukaz ping z možnostjo -c 4 za pošiljanje štirih zahtev za odmev ICMP navedenemu gostitelju.
- 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.
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:
- ` #!/bin/bash `: vrstica shebang določa, da je treba skript interpretirati z lupino Bash.
- ` niz=(3 56 24 89 67) `: Niz je deklariran in inicializiran z vrednostmi.
- ` max=${matrika[0]} `: `max` se inicializira s prvim elementom matrike.
- ` za num v ${array[@]}; narediti `: zanka `za` se uporablja za ponavljanje elementov matrike.
- ` if ((num> max)); potem `: Stavek `if` preveri, ali je trenutni element `num` večji od trenutnega največjega `max`.
- ` max=$num`: če`num ` je večji od `max`, `max` se posodobi z vrednostjo num.
- ` Končano `: Zanka `za` je zaprta.
- ` echo Največji element v matriki je: $max `: Končno skript natisne največjo vrednost, najdeno v matriki.
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.
Vsota elementov
Izvedite več o lupinskih skriptih
- Razlika med lupino in jedrom
- Razlika med Bind Shell in Reverse Shell
- Uvod v lupino Linux in skriptno lupino
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:
- ` #!/bin/bash `: To se imenuje shebang in operacijskemu sistemu pove, naj uporabi lupino Bash za interpretacijo in izvedbo skripta.
- ` imenik=″ `: Ta vrstica dodeli prvi argument ukazne vrstice (označen z ) spremenljivki ` imenik `.
- ` if [ -z $imenik ]; potem `: Ta vrstica začne stavek if, ki preveri, ali je ` imenik ` spremenljivka je prazna (-z preveri prazen niz).
- ` echo Uporaba:
`: Če je imenik prazen, ta vrstica natisne sporočilo o uporabi, kjer je ` 0 $ ` predstavlja 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
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.comtiskano 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.
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 $agePojasnilo:
- 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.
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.
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 gfg8) 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
bitiPojasnilo:
- #!/bin/bash: To je shebang vrstica, ki določa tolmača (/bin/bash), ki bo uporabljen za izvajanje skripta.
- file=example.txt: Ta vrstica definira datoteko spremenljivke in ji dodeli vrednost example.txt. To lahko zamenjate z imenom datoteke, ki jo želite preveriti.
- 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.
- 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.
- else: Če je pogoj napačen (tj. datoteka ne obstaja), skript izvede kodo pod vejo else.
- 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.
- fi: Ta vrstica označuje konec stavka if.
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: Pozdravljeni10) 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
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čanoPojasnilo:
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
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: $sumPojasnilo:
Skript se začne tako, da vas prosi, da vnesete številko (N) z read. Ta številka bo določila, kolikokrat se bo zanka zagnala.- Spremenljivka sum je inicializirana na 0. Ta spremenljivka bo sledila vsoti celih števil.
- 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.
- 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.
- Po vsaki ponovitvi i++ poveča vrednost i za 1.
- Zanka se nadaljuje, dokler pogoj i<=$N ne postane napačen (ko i postane večji od N).
- Ko je zanka končana, skript prikaže vsoto celih števil od 1 do vnesenega števila N.
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
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)
bitiPojasnilo:
- [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
bitiPojasnilo:
- #!/bin/bash: To je shebang vrstica, ki določa tolmača (/bin/bash), ki bo uporabljen za izvajanje skripta.
- 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.
- if [ -e $file ]; potem: Ta vrstica začne stavek if. Preveri, ali datoteka, podana s spremenljivko $file, obstaja. Zastavica -e preverja obstoj datoteke.
- 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.
- echo Prebrana vrstica: $line: Ta vrstica natisne vsebino vrstice, ki je bila prebrana iz datoteke. Spremenljivka $line vsebuje vsebino trenutne vrstice.
- # 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.
- done <$file: To označuje konec zanke while. < $file preusmeri vsebino datoteke, ki jo prebere zanka.
- else: Če datoteka ne obstaja (pogoj v stavku if je napačen), skript izvede kodo pod vejo else.
- echo Datoteke ni bilo mogoče najti: $file: Ta vrstica natisne sporočilo o napaki, ki nakazuje, da navedena datoteka ni bila najdena.
- fi: Ta vrstica označuje konec stavka if.
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_resultPojasnilo:
- Skript se začne z vrstico shebang #!/bin/bash za podajanje tolmača.
- Calculate_factorial() je definiran kot funkcija. Potrebuje en argument, num, ki je število, za katerega je treba izračunati faktorial.
- Znotraj funkcije je dejstvo inicializirano na 1. Ta spremenljivka bo shranila faktorski rezultat.
- Zanka for ponavlja od 1 do danega števila (num). V vsaki ponovitvi pomnoži trenutno vrednost dejstva z indeksom zanke i.
- Ko je zanka končana, spremenljivka dejstva vsebuje izračunani faktorial.
- Skript uporabnika pozove, da vnese številko z read.
- Funkcija Calculate_factorial se pokliče s številko, ki jo poda uporabnik, rezultat pa se shrani v spremenljivko factorial_result.
- Nazadnje skript prikaže izračunani faktorski rezultat.
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:
- #!/bin/bash: Ta vrstica shebang določa tolmača, ki bo uporabljen za izvajanje skripta.
- 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.
- 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.
- echo Running…, sleep 10, echo Finished.: To so samo vzorčni ukazi za simulacijo izvajanja skripta.
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:
- Skript se začne s shebangom (#!/bin/bash), kar pomeni, da je treba skript interpretirati z lupino Bash.
- Spremenljivka input_file je nastavljena na ime vhodne datoteke, ki vsebuje podvojene vrstice (to spremenite v svoje dejansko ime vhodne datoteke).
- Spremenljivka output_file je nastavljena na ime izhodne datoteke, kjer bodo odstranjeni dvojniki (to spremenite v želeno ime izhodne datoteke).
- Skript uporablja ukaz sort za razvrščanje vrstic v vhodni datoteki. Razvrščanje vrstic zagotavlja, da so podvojene vrstice združene skupaj.
- Razvrščene vrstice se nato prenesejo skozi ukaz uniq, ki odstrani zaporedne podvojene vrstice. Izhod tega procesa je preusmerjen v izhodno datoteko.
- Ko so dvojniki odstranjeni, skript natisne sporočilo o uspehu.
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: $passwordOpomba: Uporabnik lahko ustrezno spremeni dolžino gesla, tako da zamenja številko `12`.
Pojasnilo:
- Skript se začne s shebangom (#!/bin/bash), kar pomeni, da ga je treba interpretirati z lupino Bash.
- 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.
- Spremenljivki gesla je dodeljen rezultat klica funkcije generate_password.
- Na koncu se ustvarjeno geslo prikaže z odmevom.
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_sizePojasnilo:
- Skript se začne z #!/bin/bash shebang, kar pomeni, da ga je treba interpretirati z lupino Bash.
- Spremenljivka imenika je nastavljena na pot imenika, za katerega želite izračunati skupno velikost datoteke. Zamenjajte /path/to/your/directory z dejansko potjo.
- 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).
- Izhod du je posredovan grep total, da filtrira vrstico, ki vsebuje skupno velikost.
- awk '{print $1}' se uporablja za ekstrahiranje prvega polja (skupne velikosti) iz vrstice.
- Izračunana skupna velikost je shranjena v spremenljivki total_size.
- Na koncu skript prikaže skupno velikost z odmevom.
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
bitiPojasnilo:
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
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čanoPojasnilo:
- Zanka `while` se začne s ključno besedo `while`, ki ji sledi pogoj v oglatih oklepajih `[ ]`.
- Telo zanke, ki vsebuje ukaze, ki jih je treba izvesti, je zaprto med ključnima besedama `do` in `done`.
- 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čanoPojasnilo:
- 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
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 -prazenPojasnilo:
- ` #!/bin/bash `: To se imenuje shebang in operacijskemu sistemu pove, naj uporabi lupino Bash za interpretacijo in izvedbo skripta.
- ` imenik=$1″ `: Ta vrstica dodeli prvi argument ukazne vrstice (označen z $1) spremenljivki ` imenik `.
- ` if [ -z $imenik ]; potem `: Ta vrstica začne stavek if, ki preveri, ali je ` imenik ` spremenljivka je prazna (-z preveri prazen niz).
- ` echo Uporaba: $0 `: Če je imenik prazen, ta vrstica natisne sporočilo o uporabi, kjer je ` 0 $ ` predstavlja ime skripta.
- ` izhod 1 `: Ta vrstica zapusti skript z izhodno kodo ` 1 `, ki označuje napako.
- ` biti `: Ta vrstica označuje konec ` če ` izjava.
- ` če [! -d $imenik]; potem `: To zažene drug stavek if za preverjanje, ali navedeni imenik obstaja (` -d ` preizkusi za imenik).
- ` echo Napaka: '$directory' ni veljaven imenik. `: Če navedeni imenik ne obstaja, ta vrstica natisne sporočilo o napaki.
- ` izhod 1 `: Zapre skript z izhodno kodo ` 1 `.
- ` biti `: Označuje konec drugega ` če` izjava.
- ` 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.
- ` 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
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!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
biticd $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čanoPojasnilo:
- #!/bin/bash : To je shebang, ki določa, da je treba skript interpretirati z lupino Bash.
- imenik=$1″ : Ta vrstica dodeli prvi argument ukazne vrstice imeniku spremenljivk.
- if [ -z $imenik ]; potem : Ta vrstica preveri, ali je spremenljivka imenika prazna (pri izvajanju skripta ni podanega argumenta).
- echo Uporaba: $0 : Če je imenik prazen, ta vrstica natisne sporočilo o uporabi z imenom skripta ($0).
- izhod 1 : Ta vrstica zapusti skript z izhodno kodo 1, kar pomeni, da je prišlo do napake.
- f i: To označuje konec prvega stavka if.
- če [! -d $imenik]; potem : Ta vrstica preveri, ali navedeni imenik ne obstaja (-d preizkusi imenik).
- echo Napaka: '$directory' ni veljaven imenik. : Če navedeni imenik ne obstaja, ta vrstica natisne sporočilo o napaki.
- izhod 1 : zapusti skript z izhodno kodo 1.
- biti : Označi konec drugega stavka if.
- 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.
- 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).
- if [ -f $file ]; potem : preveri, ali je trenutni element ponovitve zanke navadna datoteka (-f preizkusi navadno datoteko).
- 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.
- [ $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.
- biti : Označuje konec notranjega stavka if.
- Končano : Označuje konec zanke.
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:
- Aritmetična razširitev ($((…)))
- Uporaba ukaza expr
- 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: $vsotaPojasnilo:
- `#!/bin/bash` : To je shebang, ki določa, da je treba skript tolmačiti z lupino Bash.
- `num1=10` in ` num2=5` : Te vrstice dodelijo vrednosti 10 in 5 spremenljivkam ` št.1 ` in ` št.2 ` oziroma.
- `#Aritmetična razširitev ($((…)))` : To je komentar, ki označuje začetek odseka, ki prikazuje aritmetično razširitev.
- `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.
- `echo Sum: $rezultat` : Ta vrstica natisne izračunano vsoto z uporabo vrednosti, shranjene v ` rezultat ` spremenljivka.
- `#Uporaba ukaza expr` : To je komentar, ki označuje začetek razdelka, ki prikazuje uporabo znaka ` ekspr ` ukaz za aritmetične operacije.
- `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.
- `echo Sum: $sum` : Ta vrstica natisne izračunano vsoto z uporabo vrednosti, shranjene v ` vsota ` spremenljivka.
- `#Uporaba ukaza let` : To je komentar, ki označuje začetek razdelka, ki prikazuje uporabo znaka ` pustiti ` ukaz za aritmetične operacije.
- `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.
- `echo Sum: $sum` : Ta vrstica natisne izračunano vsoto z uporabo vrednosti, shranjene v ` vsota ` spremenljivka.
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.
bitiPojasnilo:
- Kot argument vzame ime gostitelja ali naslov IP in preveri, ali je argument naveden.
- Če ni podanega nobenega argumenta, prikaže sporočilo o uporabi in se zapre.
- Uporablja ukaz ping z možnostjo -c 4 za pošiljanje štirih zahtev za odmev ICMP navedenemu gostitelju.
- 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.
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:
- ` #!/bin/bash `: vrstica shebang določa, da je treba skript interpretirati z lupino Bash.
- ` niz=(3 56 24 89 67) `: Niz je deklariran in inicializiran z vrednostmi.
- ` max=${matrika[0]} `: `max` se inicializira s prvim elementom matrike.
- ` za num v ${array[@]}; narediti `: zanka `za` se uporablja za ponavljanje elementov matrike.
- ` if ((num> max)); potem `: Stavek `if` preveri, ali je trenutni element `num` večji od trenutnega največjega `max`.
- ` max=$num`: če`num ` je večji od `max`, `max` se posodobi z vrednostjo num.
- ` Končano `: Zanka `za` je zaprta.
- ` echo Največji element v matriki je: $max `: Končno skript natisne največjo vrednost, najdeno v matriki.
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.
Vsota elementov
Izvedite več o lupinskih skriptih
- Razlika med lupino in jedrom
- Razlika med Bind Shell in Reverse Shell
- Uvod v lupino Linux in skriptno lupino
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 `: Ta vrstica zapusti skript z izhodno kodo ` 1 `, ki označuje napako.
- ` biti `: Ta vrstica označuje konec ` če ` izjava.
- ` če [! -d $imenik]; potem `: To zažene drug stavek if za preverjanje, ali navedeni imenik obstaja (` -d ` preizkusi za imenik).
- ` echo Napaka: '$directory' ni veljaven imenik. `: Če navedeni imenik ne obstaja, ta vrstica natisne sporočilo o napaki.
- ` izhod 1 `: Zapre skript z izhodno kodo ` 1 `.
- ` biti `: Označuje konec drugega ` če` izjava.
- ` 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.
- ` 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
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!

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
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.comtiskano 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.
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 $agePojasnilo:
- 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.
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.
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 gfg8) 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
bitiPojasnilo:
- #!/bin/bash: To je shebang vrstica, ki določa tolmača (/bin/bash), ki bo uporabljen za izvajanje skripta.
- file=example.txt: Ta vrstica definira datoteko spremenljivke in ji dodeli vrednost example.txt. To lahko zamenjate z imenom datoteke, ki jo želite preveriti.
- 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.
- 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.
- else: Če je pogoj napačen (tj. datoteka ne obstaja), skript izvede kodo pod vejo else.
- 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.
- fi: Ta vrstica označuje konec stavka if.
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: Pozdravljeni10) 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
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čanoPojasnilo:
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
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: $sumPojasnilo:
Skript se začne tako, da vas prosi, da vnesete številko (N) z read. Ta številka bo določila, kolikokrat se bo zanka zagnala.
- Spremenljivka sum je inicializirana na 0. Ta spremenljivka bo sledila vsoti celih števil.
- 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.
- 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.
- Po vsaki ponovitvi i++ poveča vrednost i za 1.
- Zanka se nadaljuje, dokler pogoj i<=$N ne postane napačen (ko i postane večji od N).
- Ko je zanka končana, skript prikaže vsoto celih števil od 1 do vnesenega števila N.
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
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)
bitiPojasnilo:
- [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
bitiPojasnilo:
- #!/bin/bash: To je shebang vrstica, ki določa tolmača (/bin/bash), ki bo uporabljen za izvajanje skripta.
- 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.
- if [ -e $file ]; potem: Ta vrstica začne stavek if. Preveri, ali datoteka, podana s spremenljivko $file, obstaja. Zastavica -e preverja obstoj datoteke.
- 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.
- echo Prebrana vrstica: $line: Ta vrstica natisne vsebino vrstice, ki je bila prebrana iz datoteke. Spremenljivka $line vsebuje vsebino trenutne vrstice.
- # 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.
- done <$file: To označuje konec zanke while. < $file preusmeri vsebino datoteke, ki jo prebere zanka.
- else: Če datoteka ne obstaja (pogoj v stavku if je napačen), skript izvede kodo pod vejo else.
- echo Datoteke ni bilo mogoče najti: $file: Ta vrstica natisne sporočilo o napaki, ki nakazuje, da navedena datoteka ni bila najdena.
- fi: Ta vrstica označuje konec stavka if.
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_resultPojasnilo:
- Skript se začne z vrstico shebang #!/bin/bash za podajanje tolmača.
- Calculate_factorial() je definiran kot funkcija. Potrebuje en argument, num, ki je število, za katerega je treba izračunati faktorial.
- Znotraj funkcije je dejstvo inicializirano na 1. Ta spremenljivka bo shranila faktorski rezultat.
- Zanka for ponavlja od 1 do danega števila (num). V vsaki ponovitvi pomnoži trenutno vrednost dejstva z indeksom zanke i.
- Ko je zanka končana, spremenljivka dejstva vsebuje izračunani faktorial.
- Skript uporabnika pozove, da vnese številko z read.
- Funkcija Calculate_factorial se pokliče s številko, ki jo poda uporabnik, rezultat pa se shrani v spremenljivko factorial_result.
- Nazadnje skript prikaže izračunani faktorski rezultat.
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:
- #!/bin/bash: Ta vrstica shebang določa tolmača, ki bo uporabljen za izvajanje skripta.
- 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.
- 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.
- echo Running…, sleep 10, echo Finished.: To so samo vzorčni ukazi za simulacijo izvajanja skripta.
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:
- Skript se začne s shebangom (#!/bin/bash), kar pomeni, da je treba skript interpretirati z lupino Bash.
- Spremenljivka input_file je nastavljena na ime vhodne datoteke, ki vsebuje podvojene vrstice (to spremenite v svoje dejansko ime vhodne datoteke).
- Spremenljivka output_file je nastavljena na ime izhodne datoteke, kjer bodo odstranjeni dvojniki (to spremenite v želeno ime izhodne datoteke).
- Skript uporablja ukaz sort za razvrščanje vrstic v vhodni datoteki. Razvrščanje vrstic zagotavlja, da so podvojene vrstice združene skupaj.
- Razvrščene vrstice se nato prenesejo skozi ukaz uniq, ki odstrani zaporedne podvojene vrstice. Izhod tega procesa je preusmerjen v izhodno datoteko.
- Ko so dvojniki odstranjeni, skript natisne sporočilo o uspehu.
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: $passwordOpomba: Uporabnik lahko ustrezno spremeni dolžino gesla, tako da zamenja številko `12`.
Pojasnilo:
- Skript se začne s shebangom (#!/bin/bash), kar pomeni, da ga je treba interpretirati z lupino Bash.
- 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.
- Spremenljivki gesla je dodeljen rezultat klica funkcije generate_password.
- Na koncu se ustvarjeno geslo prikaže z odmevom.
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_sizePojasnilo:
- Skript se začne z #!/bin/bash shebang, kar pomeni, da ga je treba interpretirati z lupino Bash.
- Spremenljivka imenika je nastavljena na pot imenika, za katerega želite izračunati skupno velikost datoteke. Zamenjajte /path/to/your/directory z dejansko potjo.
- 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).
- Izhod du je posredovan grep total, da filtrira vrstico, ki vsebuje skupno velikost.
- awk '{print $1}' se uporablja za ekstrahiranje prvega polja (skupne velikosti) iz vrstice.
- Izračunana skupna velikost je shranjena v spremenljivki total_size.
- Na koncu skript prikaže skupno velikost z odmevom.
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
bitiPojasnilo:
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
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čanoPojasnilo:
- Zanka `while` se začne s ključno besedo `while`, ki ji sledi pogoj v oglatih oklepajih `[ ]`.
- Telo zanke, ki vsebuje ukaze, ki jih je treba izvesti, je zaprto med ključnima besedama `do` in `done`.
- 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čanoPojasnilo:
- 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
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 -prazenPojasnilo:
- ` #!/bin/bash `: To se imenuje shebang in operacijskemu sistemu pove, naj uporabi lupino Bash za interpretacijo in izvedbo skripta.
- ` imenik=$1″ `: Ta vrstica dodeli prvi argument ukazne vrstice (označen z $1) spremenljivki ` imenik `.
- ` if [ -z $imenik ]; potem `: Ta vrstica začne stavek if, ki preveri, ali je ` imenik ` spremenljivka je prazna (-z preveri prazen niz).
- ` echo Uporaba: $0 `: Če je imenik prazen, ta vrstica natisne sporočilo o uporabi, kjer je ` 0 $ ` predstavlja ime skripta.
- ` izhod 1 `: Ta vrstica zapusti skript z izhodno kodo ` 1 `, ki označuje napako.
- ` biti `: Ta vrstica označuje konec ` če ` izjava.
- ` če [! -d $imenik]; potem `: To zažene drug stavek if za preverjanje, ali navedeni imenik obstaja (` -d ` preizkusi za imenik).
- ` echo Napaka: '$directory' ni veljaven imenik. `: Če navedeni imenik ne obstaja, ta vrstica natisne sporočilo o napaki.
- ` izhod 1 `: Zapre skript z izhodno kodo ` 1 `.
- ` biti `: Označuje konec drugega ` če` izjava.
- ` 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.
- ` 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
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!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
biticd $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čanoPojasnilo:
- #!/bin/bash : To je shebang, ki določa, da je treba skript interpretirati z lupino Bash.
- imenik=$1″ : Ta vrstica dodeli prvi argument ukazne vrstice imeniku spremenljivk.
- if [ -z $imenik ]; potem : Ta vrstica preveri, ali je spremenljivka imenika prazna (pri izvajanju skripta ni podanega argumenta).
- echo Uporaba: $0 : Če je imenik prazen, ta vrstica natisne sporočilo o uporabi z imenom skripta ($0).
- izhod 1 : Ta vrstica zapusti skript z izhodno kodo 1, kar pomeni, da je prišlo do napake.
- f i: To označuje konec prvega stavka if.
- če [! -d $imenik]; potem : Ta vrstica preveri, ali navedeni imenik ne obstaja (-d preizkusi imenik).
- echo Napaka: '$directory' ni veljaven imenik. : Če navedeni imenik ne obstaja, ta vrstica natisne sporočilo o napaki.
- izhod 1 : zapusti skript z izhodno kodo 1.
- biti : Označi konec drugega stavka if.
- 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.
- 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).
- if [ -f $file ]; potem : preveri, ali je trenutni element ponovitve zanke navadna datoteka (-f preizkusi navadno datoteko).
- 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.
- [ $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.
- biti : Označuje konec notranjega stavka if.
- Končano : Označuje konec zanke.
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:
- Aritmetična razširitev ($((…)))
- Uporaba ukaza expr
- 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: $vsotaPojasnilo:
- `#!/bin/bash` : To je shebang, ki določa, da je treba skript tolmačiti z lupino Bash.
- `num1=10` in ` num2=5` : Te vrstice dodelijo vrednosti 10 in 5 spremenljivkam ` št.1 ` in ` št.2 ` oziroma.
- `#Aritmetična razširitev ($((…)))` : To je komentar, ki označuje začetek odseka, ki prikazuje aritmetično razširitev.
- `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.
- `echo Sum: $rezultat` : Ta vrstica natisne izračunano vsoto z uporabo vrednosti, shranjene v ` rezultat ` spremenljivka.
- `#Uporaba ukaza expr` : To je komentar, ki označuje začetek razdelka, ki prikazuje uporabo znaka ` ekspr ` ukaz za aritmetične operacije.
- `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.
- `echo Sum: $sum` : Ta vrstica natisne izračunano vsoto z uporabo vrednosti, shranjene v ` vsota ` spremenljivka.
- `#Uporaba ukaza let` : To je komentar, ki označuje začetek razdelka, ki prikazuje uporabo znaka ` pustiti ` ukaz za aritmetične operacije.
- `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.
- `echo Sum: $sum` : Ta vrstica natisne izračunano vsoto z uporabo vrednosti, shranjene v ` vsota ` spremenljivka.
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.
bitiPojasnilo:
- Kot argument vzame ime gostitelja ali naslov IP in preveri, ali je argument naveden.
- Če ni podanega nobenega argumenta, prikaže sporočilo o uporabi in se zapre.
- Uporablja ukaz ping z možnostjo -c 4 za pošiljanje štirih zahtev za odmev ICMP navedenemu gostitelju.
- 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.
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:
- ` #!/bin/bash `: vrstica shebang določa, da je treba skript interpretirati z lupino Bash.
- ` niz=(3 56 24 89 67) `: Niz je deklariran in inicializiran z vrednostmi.
- ` max=${matrika[0]} `: `max` se inicializira s prvim elementom matrike.
- ` za num v ${array[@]}; narediti `: zanka `za` se uporablja za ponavljanje elementov matrike.
- ` if ((num> max)); potem `: Stavek `if` preveri, ali je trenutni element `num` večji od trenutnega največjega `max`.
- ` max=$num`: če`num ` je večji od `max`, `max` se posodobi z vrednostjo num.
- ` Končano `: Zanka `za` je zaprta.
- ` echo Največji element v matriki je: $max `: Končno skript natisne največjo vrednost, najdeno v matriki.
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.
Vsota elementov
Izvedite več o lupinskih skriptih
- Razlika med lupino in jedrom
- Razlika med Bind Shell in Reverse Shell
- Uvod v lupino Linux in skriptno lupino
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
biticd $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:
- #!/bin/bash : To je shebang, ki določa, da je treba skript interpretirati z lupino Bash.
- imenik=″ : Ta vrstica dodeli prvi argument ukazne vrstice imeniku spremenljivk.
- if [ -z $imenik ]; potem : Ta vrstica preveri, ali je spremenljivka imenika prazna (pri izvajanju skripta ni podanega argumenta).
- echo Uporaba:
: Č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
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.comtiskano 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.
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 $agePojasnilo:
- 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.
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.
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 gfg8) 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
bitiPojasnilo:
- #!/bin/bash: To je shebang vrstica, ki določa tolmača (/bin/bash), ki bo uporabljen za izvajanje skripta.
- file=example.txt: Ta vrstica definira datoteko spremenljivke in ji dodeli vrednost example.txt. To lahko zamenjate z imenom datoteke, ki jo želite preveriti.
- 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.
- 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.
- else: Če je pogoj napačen (tj. datoteka ne obstaja), skript izvede kodo pod vejo else.
- 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.
- fi: Ta vrstica označuje konec stavka if.
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: Pozdravljeni10) 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
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čanoPojasnilo:
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
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: $sumPojasnilo:
Skript se začne tako, da vas prosi, da vnesete številko (N) z read. Ta številka bo določila, kolikokrat se bo zanka zagnala.- Spremenljivka sum je inicializirana na 0. Ta spremenljivka bo sledila vsoti celih števil.
- 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.
- 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.
- Po vsaki ponovitvi i++ poveča vrednost i za 1.
- Zanka se nadaljuje, dokler pogoj i<=$N ne postane napačen (ko i postane večji od N).
- Ko je zanka končana, skript prikaže vsoto celih števil od 1 do vnesenega števila N.
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
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)
bitiPojasnilo:
- [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
bitiPojasnilo:
- #!/bin/bash: To je shebang vrstica, ki določa tolmača (/bin/bash), ki bo uporabljen za izvajanje skripta.
- 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.
- if [ -e $file ]; potem: Ta vrstica začne stavek if. Preveri, ali datoteka, podana s spremenljivko $file, obstaja. Zastavica -e preverja obstoj datoteke.
- 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.
- echo Prebrana vrstica: $line: Ta vrstica natisne vsebino vrstice, ki je bila prebrana iz datoteke. Spremenljivka $line vsebuje vsebino trenutne vrstice.
- # 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.
- done <$file: To označuje konec zanke while. < $file preusmeri vsebino datoteke, ki jo prebere zanka.
- else: Če datoteka ne obstaja (pogoj v stavku if je napačen), skript izvede kodo pod vejo else.
- echo Datoteke ni bilo mogoče najti: $file: Ta vrstica natisne sporočilo o napaki, ki nakazuje, da navedena datoteka ni bila najdena.
- fi: Ta vrstica označuje konec stavka if.
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_resultPojasnilo:
- Skript se začne z vrstico shebang #!/bin/bash za podajanje tolmača.
- Calculate_factorial() je definiran kot funkcija. Potrebuje en argument, num, ki je število, za katerega je treba izračunati faktorial.
- Znotraj funkcije je dejstvo inicializirano na 1. Ta spremenljivka bo shranila faktorski rezultat.
- Zanka for ponavlja od 1 do danega števila (num). V vsaki ponovitvi pomnoži trenutno vrednost dejstva z indeksom zanke i.
- Ko je zanka končana, spremenljivka dejstva vsebuje izračunani faktorial.
- Skript uporabnika pozove, da vnese številko z read.
- Funkcija Calculate_factorial se pokliče s številko, ki jo poda uporabnik, rezultat pa se shrani v spremenljivko factorial_result.
- Nazadnje skript prikaže izračunani faktorski rezultat.
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:
- #!/bin/bash: Ta vrstica shebang določa tolmača, ki bo uporabljen za izvajanje skripta.
- 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.
- 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.
- echo Running…, sleep 10, echo Finished.: To so samo vzorčni ukazi za simulacijo izvajanja skripta.
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:
- Skript se začne s shebangom (#!/bin/bash), kar pomeni, da je treba skript interpretirati z lupino Bash.
- Spremenljivka input_file je nastavljena na ime vhodne datoteke, ki vsebuje podvojene vrstice (to spremenite v svoje dejansko ime vhodne datoteke).
- Spremenljivka output_file je nastavljena na ime izhodne datoteke, kjer bodo odstranjeni dvojniki (to spremenite v želeno ime izhodne datoteke).
- Skript uporablja ukaz sort za razvrščanje vrstic v vhodni datoteki. Razvrščanje vrstic zagotavlja, da so podvojene vrstice združene skupaj.
- Razvrščene vrstice se nato prenesejo skozi ukaz uniq, ki odstrani zaporedne podvojene vrstice. Izhod tega procesa je preusmerjen v izhodno datoteko.
- Ko so dvojniki odstranjeni, skript natisne sporočilo o uspehu.
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: $passwordOpomba: Uporabnik lahko ustrezno spremeni dolžino gesla, tako da zamenja številko `12`.
Pojasnilo:
- Skript se začne s shebangom (#!/bin/bash), kar pomeni, da ga je treba interpretirati z lupino Bash.
- 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.
- Spremenljivki gesla je dodeljen rezultat klica funkcije generate_password.
- Na koncu se ustvarjeno geslo prikaže z odmevom.
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_sizePojasnilo:
- Skript se začne z #!/bin/bash shebang, kar pomeni, da ga je treba interpretirati z lupino Bash.
- Spremenljivka imenika je nastavljena na pot imenika, za katerega želite izračunati skupno velikost datoteke. Zamenjajte /path/to/your/directory z dejansko potjo.
- 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).
- Izhod du je posredovan grep total, da filtrira vrstico, ki vsebuje skupno velikost.
- awk '{print $1}' se uporablja za ekstrahiranje prvega polja (skupne velikosti) iz vrstice.
- Izračunana skupna velikost je shranjena v spremenljivki total_size.
- Na koncu skript prikaže skupno velikost z odmevom.
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
bitiPojasnilo:
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
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čanoPojasnilo:
- Zanka `while` se začne s ključno besedo `while`, ki ji sledi pogoj v oglatih oklepajih `[ ]`.
- Telo zanke, ki vsebuje ukaze, ki jih je treba izvesti, je zaprto med ključnima besedama `do` in `done`.
- 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čanoPojasnilo:
- 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
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 -prazenPojasnilo:
- ` #!/bin/bash `: To se imenuje shebang in operacijskemu sistemu pove, naj uporabi lupino Bash za interpretacijo in izvedbo skripta.
- ` imenik=$1″ `: Ta vrstica dodeli prvi argument ukazne vrstice (označen z $1) spremenljivki ` imenik `.
- ` if [ -z $imenik ]; potem `: Ta vrstica začne stavek if, ki preveri, ali je ` imenik ` spremenljivka je prazna (-z preveri prazen niz).
- ` echo Uporaba: $0 `: Če je imenik prazen, ta vrstica natisne sporočilo o uporabi, kjer je ` 0 $ ` predstavlja ime skripta.
- ` izhod 1 `: Ta vrstica zapusti skript z izhodno kodo ` 1 `, ki označuje napako.
- ` biti `: Ta vrstica označuje konec ` če ` izjava.
- ` če [! -d $imenik]; potem `: To zažene drug stavek if za preverjanje, ali navedeni imenik obstaja (` -d ` preizkusi za imenik).
- ` echo Napaka: '$directory' ni veljaven imenik. `: Če navedeni imenik ne obstaja, ta vrstica natisne sporočilo o napaki.
- ` izhod 1 `: Zapre skript z izhodno kodo ` 1 `.
- ` biti `: Označuje konec drugega ` če` izjava.
- ` 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.
- ` 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
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!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
biticd $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čanoPojasnilo:
- #!/bin/bash : To je shebang, ki določa, da je treba skript interpretirati z lupino Bash.
- imenik=$1″ : Ta vrstica dodeli prvi argument ukazne vrstice imeniku spremenljivk.
- if [ -z $imenik ]; potem : Ta vrstica preveri, ali je spremenljivka imenika prazna (pri izvajanju skripta ni podanega argumenta).
- echo Uporaba: $0 : Če je imenik prazen, ta vrstica natisne sporočilo o uporabi z imenom skripta ($0).
- izhod 1 : Ta vrstica zapusti skript z izhodno kodo 1, kar pomeni, da je prišlo do napake.
- f i: To označuje konec prvega stavka if.
- če [! -d $imenik]; potem : Ta vrstica preveri, ali navedeni imenik ne obstaja (-d preizkusi imenik).
- echo Napaka: '$directory' ni veljaven imenik. : Če navedeni imenik ne obstaja, ta vrstica natisne sporočilo o napaki.
- izhod 1 : zapusti skript z izhodno kodo 1.
- biti : Označi konec drugega stavka if.
- 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.
- 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).
- if [ -f $file ]; potem : preveri, ali je trenutni element ponovitve zanke navadna datoteka (-f preizkusi navadno datoteko).
- 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.
- [ $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.
- biti : Označuje konec notranjega stavka if.
- Končano : Označuje konec zanke.
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:
- Aritmetična razširitev ($((…)))
- Uporaba ukaza expr
- 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: $vsotaPojasnilo:
- `#!/bin/bash` : To je shebang, ki določa, da je treba skript tolmačiti z lupino Bash.
- `num1=10` in ` num2=5` : Te vrstice dodelijo vrednosti 10 in 5 spremenljivkam ` št.1 ` in ` št.2 ` oziroma.
- `#Aritmetična razširitev ($((…)))` : To je komentar, ki označuje začetek odseka, ki prikazuje aritmetično razširitev.
- `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.
- `echo Sum: $rezultat` : Ta vrstica natisne izračunano vsoto z uporabo vrednosti, shranjene v ` rezultat ` spremenljivka.
- `#Uporaba ukaza expr` : To je komentar, ki označuje začetek razdelka, ki prikazuje uporabo znaka ` ekspr ` ukaz za aritmetične operacije.
- `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.
- `echo Sum: $sum` : Ta vrstica natisne izračunano vsoto z uporabo vrednosti, shranjene v ` vsota ` spremenljivka.
- `#Uporaba ukaza let` : To je komentar, ki označuje začetek razdelka, ki prikazuje uporabo znaka ` pustiti ` ukaz za aritmetične operacije.
- `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.
- `echo Sum: $sum` : Ta vrstica natisne izračunano vsoto z uporabo vrednosti, shranjene v ` vsota ` spremenljivka.
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.
bitiPojasnilo:
- Kot argument vzame ime gostitelja ali naslov IP in preveri, ali je argument naveden.
- Če ni podanega nobenega argumenta, prikaže sporočilo o uporabi in se zapre.
- Uporablja ukaz ping z možnostjo -c 4 za pošiljanje štirih zahtev za odmev ICMP navedenemu gostitelju.
- 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.
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:
- ` #!/bin/bash `: vrstica shebang določa, da je treba skript interpretirati z lupino Bash.
- ` niz=(3 56 24 89 67) `: Niz je deklariran in inicializiran z vrednostmi.
- ` max=${matrika[0]} `: `max` se inicializira s prvim elementom matrike.
- ` za num v ${array[@]}; narediti `: zanka `za` se uporablja za ponavljanje elementov matrike.
- ` if ((num> max)); potem `: Stavek `if` preveri, ali je trenutni element `num` večji od trenutnega največjega `max`.
- ` max=$num`: če`num ` je večji od `max`, `max` se posodobi z vrednostjo num.
- ` Končano `: Zanka `za` je zaprta.
- ` echo Največji element v matriki je: $max `: Končno skript natisne največjo vrednost, najdeno v matriki.
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.
Vsota elementov
Izvedite več o lupinskih skriptih
- Razlika med lupino in jedrom
- Razlika med Bind Shell in Reverse Shell
- Uvod v lupino Linux in skriptno lupino
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.
).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
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.comtiskano 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.
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 $agePojasnilo:
- 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.
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.
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 gfg8) 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
bitiPojasnilo:
- #!/bin/bash: To je shebang vrstica, ki določa tolmača (/bin/bash), ki bo uporabljen za izvajanje skripta.
- file=example.txt: Ta vrstica definira datoteko spremenljivke in ji dodeli vrednost example.txt. To lahko zamenjate z imenom datoteke, ki jo želite preveriti.
- 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.
- 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.
- else: Če je pogoj napačen (tj. datoteka ne obstaja), skript izvede kodo pod vejo else.
- 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.
- fi: Ta vrstica označuje konec stavka if.
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: Pozdravljeni10) 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
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čanoPojasnilo:
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
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: $sumPojasnilo:
Skript se začne tako, da vas prosi, da vnesete številko (N) z read. Ta številka bo določila, kolikokrat se bo zanka zagnala.- Spremenljivka sum je inicializirana na 0. Ta spremenljivka bo sledila vsoti celih števil.
- 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.
- 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.
- Po vsaki ponovitvi i++ poveča vrednost i za 1.
- Zanka se nadaljuje, dokler pogoj i<=$N ne postane napačen (ko i postane večji od N).
- Ko je zanka končana, skript prikaže vsoto celih števil od 1 do vnesenega števila N.
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
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)
bitiPojasnilo:
- [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
bitiPojasnilo:
- #!/bin/bash: To je shebang vrstica, ki določa tolmača (/bin/bash), ki bo uporabljen za izvajanje skripta.
- 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.
- if [ -e $file ]; potem: Ta vrstica začne stavek if. Preveri, ali datoteka, podana s spremenljivko $file, obstaja. Zastavica -e preverja obstoj datoteke.
- 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.
- echo Prebrana vrstica: $line: Ta vrstica natisne vsebino vrstice, ki je bila prebrana iz datoteke. Spremenljivka $line vsebuje vsebino trenutne vrstice.
- # 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.
- done <$file: To označuje konec zanke while. < $file preusmeri vsebino datoteke, ki jo prebere zanka.
- else: Če datoteka ne obstaja (pogoj v stavku if je napačen), skript izvede kodo pod vejo else.
- echo Datoteke ni bilo mogoče najti: $file: Ta vrstica natisne sporočilo o napaki, ki nakazuje, da navedena datoteka ni bila najdena.
- fi: Ta vrstica označuje konec stavka if.
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_resultPojasnilo:
- Skript se začne z vrstico shebang #!/bin/bash za podajanje tolmača.
- Calculate_factorial() je definiran kot funkcija. Potrebuje en argument, num, ki je število, za katerega je treba izračunati faktorial.
- Znotraj funkcije je dejstvo inicializirano na 1. Ta spremenljivka bo shranila faktorski rezultat.
- Zanka for ponavlja od 1 do danega števila (num). V vsaki ponovitvi pomnoži trenutno vrednost dejstva z indeksom zanke i.
- Ko je zanka končana, spremenljivka dejstva vsebuje izračunani faktorial.
- Skript uporabnika pozove, da vnese številko z read.
- Funkcija Calculate_factorial se pokliče s številko, ki jo poda uporabnik, rezultat pa se shrani v spremenljivko factorial_result.
- Nazadnje skript prikaže izračunani faktorski rezultat.
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:
- #!/bin/bash: Ta vrstica shebang določa tolmača, ki bo uporabljen za izvajanje skripta.
- 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.
- 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.
- echo Running…, sleep 10, echo Finished.: To so samo vzorčni ukazi za simulacijo izvajanja skripta.
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:
- Skript se začne s shebangom (#!/bin/bash), kar pomeni, da je treba skript interpretirati z lupino Bash.
- Spremenljivka input_file je nastavljena na ime vhodne datoteke, ki vsebuje podvojene vrstice (to spremenite v svoje dejansko ime vhodne datoteke).
- Spremenljivka output_file je nastavljena na ime izhodne datoteke, kjer bodo odstranjeni dvojniki (to spremenite v želeno ime izhodne datoteke).
- Skript uporablja ukaz sort za razvrščanje vrstic v vhodni datoteki. Razvrščanje vrstic zagotavlja, da so podvojene vrstice združene skupaj.
- Razvrščene vrstice se nato prenesejo skozi ukaz uniq, ki odstrani zaporedne podvojene vrstice. Izhod tega procesa je preusmerjen v izhodno datoteko.
- Ko so dvojniki odstranjeni, skript natisne sporočilo o uspehu.
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: $passwordOpomba: Uporabnik lahko ustrezno spremeni dolžino gesla, tako da zamenja številko `12`.
Pojasnilo:
- Skript se začne s shebangom (#!/bin/bash), kar pomeni, da ga je treba interpretirati z lupino Bash.
- 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.
- Spremenljivki gesla je dodeljen rezultat klica funkcije generate_password.
- Na koncu se ustvarjeno geslo prikaže z odmevom.
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_sizePojasnilo:
- Skript se začne z #!/bin/bash shebang, kar pomeni, da ga je treba interpretirati z lupino Bash.
- Spremenljivka imenika je nastavljena na pot imenika, za katerega želite izračunati skupno velikost datoteke. Zamenjajte /path/to/your/directory z dejansko potjo.
- 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).
- Izhod du je posredovan grep total, da filtrira vrstico, ki vsebuje skupno velikost.
- awk '{print $1}' se uporablja za ekstrahiranje prvega polja (skupne velikosti) iz vrstice.
- Izračunana skupna velikost je shranjena v spremenljivki total_size.
- Na koncu skript prikaže skupno velikost z odmevom.
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
bitiPojasnilo:
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
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čanoPojasnilo:
- Zanka `while` se začne s ključno besedo `while`, ki ji sledi pogoj v oglatih oklepajih `[ ]`.
- Telo zanke, ki vsebuje ukaze, ki jih je treba izvesti, je zaprto med ključnima besedama `do` in `done`.
- 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čanoPojasnilo:
- 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
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 -prazenPojasnilo:
- ` #!/bin/bash `: To se imenuje shebang in operacijskemu sistemu pove, naj uporabi lupino Bash za interpretacijo in izvedbo skripta.
- ` imenik=$1″ `: Ta vrstica dodeli prvi argument ukazne vrstice (označen z $1) spremenljivki ` imenik `.
- ` if [ -z $imenik ]; potem `: Ta vrstica začne stavek if, ki preveri, ali je ` imenik ` spremenljivka je prazna (-z preveri prazen niz).
- ` echo Uporaba: $0 `: Če je imenik prazen, ta vrstica natisne sporočilo o uporabi, kjer je ` 0 $ ` predstavlja ime skripta.
- ` izhod 1 `: Ta vrstica zapusti skript z izhodno kodo ` 1 `, ki označuje napako.
- ` biti `: Ta vrstica označuje konec ` če ` izjava.
- ` če [! -d $imenik]; potem `: To zažene drug stavek if za preverjanje, ali navedeni imenik obstaja (` -d ` preizkusi za imenik).
- ` echo Napaka: '$directory' ni veljaven imenik. `: Če navedeni imenik ne obstaja, ta vrstica natisne sporočilo o napaki.
- ` izhod 1 `: Zapre skript z izhodno kodo ` 1 `.
- ` biti `: Označuje konec drugega ` če` izjava.
- ` 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.
- ` 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
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!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
biticd $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čanoPojasnilo:
- #!/bin/bash : To je shebang, ki določa, da je treba skript interpretirati z lupino Bash.
- imenik=$1″ : Ta vrstica dodeli prvi argument ukazne vrstice imeniku spremenljivk.
- if [ -z $imenik ]; potem : Ta vrstica preveri, ali je spremenljivka imenika prazna (pri izvajanju skripta ni podanega argumenta).
- echo Uporaba: $0 : Če je imenik prazen, ta vrstica natisne sporočilo o uporabi z imenom skripta ($0).
- izhod 1 : Ta vrstica zapusti skript z izhodno kodo 1, kar pomeni, da je prišlo do napake.
- f i: To označuje konec prvega stavka if.
- če [! -d $imenik]; potem : Ta vrstica preveri, ali navedeni imenik ne obstaja (-d preizkusi imenik).
- echo Napaka: '$directory' ni veljaven imenik. : Če navedeni imenik ne obstaja, ta vrstica natisne sporočilo o napaki.
- izhod 1 : zapusti skript z izhodno kodo 1.
- biti : Označi konec drugega stavka if.
- 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.
- 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).
- if [ -f $file ]; potem : preveri, ali je trenutni element ponovitve zanke navadna datoteka (-f preizkusi navadno datoteko).
- 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.
- [ $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.
- biti : Označuje konec notranjega stavka if.
- Končano : Označuje konec zanke.
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:
- Aritmetična razširitev ($((…)))
- Uporaba ukaza expr
- 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: $vsotaPojasnilo:
- `#!/bin/bash` : To je shebang, ki določa, da je treba skript tolmačiti z lupino Bash.
- `num1=10` in ` num2=5` : Te vrstice dodelijo vrednosti 10 in 5 spremenljivkam ` št.1 ` in ` št.2 ` oziroma.
- `#Aritmetična razširitev ($((…)))` : To je komentar, ki označuje začetek odseka, ki prikazuje aritmetično razširitev.
- `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.
- `echo Sum: $rezultat` : Ta vrstica natisne izračunano vsoto z uporabo vrednosti, shranjene v ` rezultat ` spremenljivka.
- `#Uporaba ukaza expr` : To je komentar, ki označuje začetek razdelka, ki prikazuje uporabo znaka ` ekspr ` ukaz za aritmetične operacije.
- `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.
- `echo Sum: $sum` : Ta vrstica natisne izračunano vsoto z uporabo vrednosti, shranjene v ` vsota ` spremenljivka.
- `#Uporaba ukaza let` : To je komentar, ki označuje začetek razdelka, ki prikazuje uporabo znaka ` pustiti ` ukaz za aritmetične operacije.
- `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.
- `echo Sum: $sum` : Ta vrstica natisne izračunano vsoto z uporabo vrednosti, shranjene v ` vsota ` spremenljivka.
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.
bitiPojasnilo:
- Kot argument vzame ime gostitelja ali naslov IP in preveri, ali je argument naveden.
- Če ni podanega nobenega argumenta, prikaže sporočilo o uporabi in se zapre.
- Uporablja ukaz ping z možnostjo -c 4 za pošiljanje štirih zahtev za odmev ICMP navedenemu gostitelju.
- 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.
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:
- ` #!/bin/bash `: vrstica shebang določa, da je treba skript interpretirati z lupino Bash.
- ` niz=(3 56 24 89 67) `: Niz je deklariran in inicializiran z vrednostmi.
- ` max=${matrika[0]} `: `max` se inicializira s prvim elementom matrike.
- ` za num v ${array[@]}; narediti `: zanka `za` se uporablja za ponavljanje elementov matrike.
- ` if ((num> max)); potem `: Stavek `if` preveri, ali je trenutni element `num` večji od trenutnega največjega `max`.
- ` max=$num`: če`num ` je večji od `max`, `max` se posodobi z vrednostjo num.
- ` Končano `: Zanka `za` je zaprta.
- ` echo Največji element v matriki je: $max `: Končno skript natisne največjo vrednost, najdeno v matriki.
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.
Vsota elementov
Izvedite več o lupinskih skriptih
- Razlika med lupino in jedrom
- Razlika med Bind Shell in Reverse Shell
- Uvod v lupino Linux in skriptno lupino
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 : Ta vrstica zapusti skript z izhodno kodo 1, kar pomeni, da je prišlo do napake.
- f i: To označuje konec prvega stavka if.
- če [! -d $imenik]; potem : Ta vrstica preveri, ali navedeni imenik ne obstaja (-d preizkusi imenik).
- echo Napaka: '$directory' ni veljaven imenik. : Če navedeni imenik ne obstaja, ta vrstica natisne sporočilo o napaki.
- izhod 1 : zapusti skript z izhodno kodo 1.
- biti : Označi konec drugega stavka if.
- 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.
- 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).
- if [ -f $file ]; potem : preveri, ali je trenutni element ponovitve zanke navadna datoteka (-f preizkusi navadno datoteko).
- 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.
- [ $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.
- biti : Označuje konec notranjega stavka if.
- Končano : Označuje konec zanke.
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:
- Aritmetična razširitev ($((…)))
- Uporaba ukaza expr
- 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:
- `#!/bin/bash` : To je shebang, ki določa, da je treba skript tolmačiti z lupino Bash.
- `num1=10` in ` num2=5` : Te vrstice dodelijo vrednosti 10 in 5 spremenljivkam ` št.1 ` in ` št.2 ` oziroma.
- `#Aritmetična razširitev ($((…)))` : To je komentar, ki označuje začetek odseka, ki prikazuje aritmetično razširitev.
- `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.
- `echo Sum: $rezultat` : Ta vrstica natisne izračunano vsoto z uporabo vrednosti, shranjene v ` rezultat ` spremenljivka.
- `#Uporaba ukaza expr` : To je komentar, ki označuje začetek razdelka, ki prikazuje uporabo znaka ` ekspr ` ukaz za aritmetične operacije.
- `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.
- `echo Sum: $sum` : Ta vrstica natisne izračunano vsoto z uporabo vrednosti, shranjene v ` vsota ` spremenljivka.
- `#Uporaba ukaza let` : To je komentar, ki označuje začetek razdelka, ki prikazuje uporabo znaka ` pustiti ` ukaz za aritmetične operacije.
- `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.
- `echo Sum: $sum` : Ta vrstica natisne izračunano vsoto z uporabo vrednosti, shranjene v ` vsota ` spremenljivka.

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
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.comtiskano 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.
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 $agePojasnilo:
- 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.
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.
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 gfg8) 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
bitiPojasnilo:
- #!/bin/bash: To je shebang vrstica, ki določa tolmača (/bin/bash), ki bo uporabljen za izvajanje skripta.
- file=example.txt: Ta vrstica definira datoteko spremenljivke in ji dodeli vrednost example.txt. To lahko zamenjate z imenom datoteke, ki jo želite preveriti.
- 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.
- 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.
- else: Če je pogoj napačen (tj. datoteka ne obstaja), skript izvede kodo pod vejo else.
- 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.
- fi: Ta vrstica označuje konec stavka if.
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: Pozdravljeni10) 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
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čanoPojasnilo:
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
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: $sumPojasnilo:
Skript se začne tako, da vas prosi, da vnesete številko (N) z read. Ta številka bo določila, kolikokrat se bo zanka zagnala.
- Spremenljivka sum je inicializirana na 0. Ta spremenljivka bo sledila vsoti celih števil.
- 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.
- 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.
- Po vsaki ponovitvi i++ poveča vrednost i za 1.
- Zanka se nadaljuje, dokler pogoj i<=$N ne postane napačen (ko i postane večji od N).
- Ko je zanka končana, skript prikaže vsoto celih števil od 1 do vnesenega števila N.
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
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)
bitiPojasnilo:
- [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
bitiPojasnilo:
- #!/bin/bash: To je shebang vrstica, ki določa tolmača (/bin/bash), ki bo uporabljen za izvajanje skripta.
- 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.
- if [ -e $file ]; potem: Ta vrstica začne stavek if. Preveri, ali datoteka, podana s spremenljivko $file, obstaja. Zastavica -e preverja obstoj datoteke.
- 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.
- echo Prebrana vrstica: $line: Ta vrstica natisne vsebino vrstice, ki je bila prebrana iz datoteke. Spremenljivka $line vsebuje vsebino trenutne vrstice.
- # 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.
- done <$file: To označuje konec zanke while. < $file preusmeri vsebino datoteke, ki jo prebere zanka.
- else: Če datoteka ne obstaja (pogoj v stavku if je napačen), skript izvede kodo pod vejo else.
- echo Datoteke ni bilo mogoče najti: $file: Ta vrstica natisne sporočilo o napaki, ki nakazuje, da navedena datoteka ni bila najdena.
- fi: Ta vrstica označuje konec stavka if.
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_resultPojasnilo:
- Skript se začne z vrstico shebang #!/bin/bash za podajanje tolmača.
- Calculate_factorial() je definiran kot funkcija. Potrebuje en argument, num, ki je število, za katerega je treba izračunati faktorial.
- Znotraj funkcije je dejstvo inicializirano na 1. Ta spremenljivka bo shranila faktorski rezultat.
- Zanka for ponavlja od 1 do danega števila (num). V vsaki ponovitvi pomnoži trenutno vrednost dejstva z indeksom zanke i.
- Ko je zanka končana, spremenljivka dejstva vsebuje izračunani faktorial.
- Skript uporabnika pozove, da vnese številko z read.
- Funkcija Calculate_factorial se pokliče s številko, ki jo poda uporabnik, rezultat pa se shrani v spremenljivko factorial_result.
- Nazadnje skript prikaže izračunani faktorski rezultat.
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:
- #!/bin/bash: Ta vrstica shebang določa tolmača, ki bo uporabljen za izvajanje skripta.
- 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.
- 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.
- echo Running…, sleep 10, echo Finished.: To so samo vzorčni ukazi za simulacijo izvajanja skripta.
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:
- Skript se začne s shebangom (#!/bin/bash), kar pomeni, da je treba skript interpretirati z lupino Bash.
- Spremenljivka input_file je nastavljena na ime vhodne datoteke, ki vsebuje podvojene vrstice (to spremenite v svoje dejansko ime vhodne datoteke).
- Spremenljivka output_file je nastavljena na ime izhodne datoteke, kjer bodo odstranjeni dvojniki (to spremenite v želeno ime izhodne datoteke).
- Skript uporablja ukaz sort za razvrščanje vrstic v vhodni datoteki. Razvrščanje vrstic zagotavlja, da so podvojene vrstice združene skupaj.
- Razvrščene vrstice se nato prenesejo skozi ukaz uniq, ki odstrani zaporedne podvojene vrstice. Izhod tega procesa je preusmerjen v izhodno datoteko.
- Ko so dvojniki odstranjeni, skript natisne sporočilo o uspehu.
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: $passwordOpomba: Uporabnik lahko ustrezno spremeni dolžino gesla, tako da zamenja številko `12`.
Pojasnilo:
- Skript se začne s shebangom (#!/bin/bash), kar pomeni, da ga je treba interpretirati z lupino Bash.
- 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.
- Spremenljivki gesla je dodeljen rezultat klica funkcije generate_password.
- Na koncu se ustvarjeno geslo prikaže z odmevom.
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_sizePojasnilo:
- Skript se začne z #!/bin/bash shebang, kar pomeni, da ga je treba interpretirati z lupino Bash.
- Spremenljivka imenika je nastavljena na pot imenika, za katerega želite izračunati skupno velikost datoteke. Zamenjajte /path/to/your/directory z dejansko potjo.
- 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).
- Izhod du je posredovan grep total, da filtrira vrstico, ki vsebuje skupno velikost.
- awk '{print $1}' se uporablja za ekstrahiranje prvega polja (skupne velikosti) iz vrstice.
- Izračunana skupna velikost je shranjena v spremenljivki total_size.
- Na koncu skript prikaže skupno velikost z odmevom.
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
bitiPojasnilo:
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
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čanoPojasnilo:
- Zanka `while` se začne s ključno besedo `while`, ki ji sledi pogoj v oglatih oklepajih `[ ]`.
- Telo zanke, ki vsebuje ukaze, ki jih je treba izvesti, je zaprto med ključnima besedama `do` in `done`.
- 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čanoPojasnilo:
- 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
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 -prazenPojasnilo:
- ` #!/bin/bash `: To se imenuje shebang in operacijskemu sistemu pove, naj uporabi lupino Bash za interpretacijo in izvedbo skripta.
- ` imenik=$1″ `: Ta vrstica dodeli prvi argument ukazne vrstice (označen z $1) spremenljivki ` imenik `.
- ` if [ -z $imenik ]; potem `: Ta vrstica začne stavek if, ki preveri, ali je ` imenik ` spremenljivka je prazna (-z preveri prazen niz).
- ` echo Uporaba: $0 `: Če je imenik prazen, ta vrstica natisne sporočilo o uporabi, kjer je ` 0 $ ` predstavlja ime skripta.
- ` izhod 1 `: Ta vrstica zapusti skript z izhodno kodo ` 1 `, ki označuje napako.
- ` biti `: Ta vrstica označuje konec ` če ` izjava.
- ` če [! -d $imenik]; potem `: To zažene drug stavek if za preverjanje, ali navedeni imenik obstaja (` -d ` preizkusi za imenik).
- ` echo Napaka: '$directory' ni veljaven imenik. `: Če navedeni imenik ne obstaja, ta vrstica natisne sporočilo o napaki.
- ` izhod 1 `: Zapre skript z izhodno kodo ` 1 `.
- ` biti `: Označuje konec drugega ` če` izjava.
- ` 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.
- ` 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
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!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
biticd $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čanoPojasnilo:
- #!/bin/bash : To je shebang, ki določa, da je treba skript interpretirati z lupino Bash.
- imenik=$1″ : Ta vrstica dodeli prvi argument ukazne vrstice imeniku spremenljivk.
- if [ -z $imenik ]; potem : Ta vrstica preveri, ali je spremenljivka imenika prazna (pri izvajanju skripta ni podanega argumenta).
- echo Uporaba: $0 : Če je imenik prazen, ta vrstica natisne sporočilo o uporabi z imenom skripta ($0).
- izhod 1 : Ta vrstica zapusti skript z izhodno kodo 1, kar pomeni, da je prišlo do napake.
- f i: To označuje konec prvega stavka if.
- če [! -d $imenik]; potem : Ta vrstica preveri, ali navedeni imenik ne obstaja (-d preizkusi imenik).
- echo Napaka: '$directory' ni veljaven imenik. : Če navedeni imenik ne obstaja, ta vrstica natisne sporočilo o napaki.
- izhod 1 : zapusti skript z izhodno kodo 1.
- biti : Označi konec drugega stavka if.
- 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.
- 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).
- if [ -f $file ]; potem : preveri, ali je trenutni element ponovitve zanke navadna datoteka (-f preizkusi navadno datoteko).
- 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.
- [ $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.
- biti : Označuje konec notranjega stavka if.
- Končano : Označuje konec zanke.
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:
- Aritmetična razširitev ($((…)))
- Uporaba ukaza expr
- 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: $vsotaPojasnilo:
- `#!/bin/bash` : To je shebang, ki določa, da je treba skript tolmačiti z lupino Bash.
- `num1=10` in ` num2=5` : Te vrstice dodelijo vrednosti 10 in 5 spremenljivkam ` št.1 ` in ` št.2 ` oziroma.
- `#Aritmetična razširitev ($((…)))` : To je komentar, ki označuje začetek odseka, ki prikazuje aritmetično razširitev.
- `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.
- `echo Sum: $rezultat` : Ta vrstica natisne izračunano vsoto z uporabo vrednosti, shranjene v ` rezultat ` spremenljivka.
- `#Uporaba ukaza expr` : To je komentar, ki označuje začetek razdelka, ki prikazuje uporabo znaka ` ekspr ` ukaz za aritmetične operacije.
- `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.
- `echo Sum: $sum` : Ta vrstica natisne izračunano vsoto z uporabo vrednosti, shranjene v ` vsota ` spremenljivka.
- `#Uporaba ukaza let` : To je komentar, ki označuje začetek razdelka, ki prikazuje uporabo znaka ` pustiti ` ukaz za aritmetične operacije.
- `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.
- `echo Sum: $sum` : Ta vrstica natisne izračunano vsoto z uporabo vrednosti, shranjene v ` vsota ` spremenljivka.
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.
bitiPojasnilo:
- Kot argument vzame ime gostitelja ali naslov IP in preveri, ali je argument naveden.
- Če ni podanega nobenega argumenta, prikaže sporočilo o uporabi in se zapre.
- Uporablja ukaz ping z možnostjo -c 4 za pošiljanje štirih zahtev za odmev ICMP navedenemu gostitelju.
- 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.
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:
- ` #!/bin/bash `: vrstica shebang določa, da je treba skript interpretirati z lupino Bash.
- ` niz=(3 56 24 89 67) `: Niz je deklariran in inicializiran z vrednostmi.
- ` max=${matrika[0]} `: `max` se inicializira s prvim elementom matrike.
- ` za num v ${array[@]}; narediti `: zanka `za` se uporablja za ponavljanje elementov matrike.
- ` if ((num> max)); potem `: Stavek `if` preveri, ali je trenutni element `num` večji od trenutnega največjega `max`.
- ` max=$num`: če`num ` je večji od `max`, `max` se posodobi z vrednostjo num.
- ` Končano `: Zanka `za` je zaprta.
- ` echo Največji element v matriki je: $max `: Končno skript natisne največjo vrednost, najdeno v matriki.
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.
Vsota elementov
Izvedite več o lupinskih skriptih
- Razlika med lupino in jedrom
- Razlika med Bind Shell in Reverse Shell
- Uvod v lupino Linux in skriptno lupino
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:
- Kot argument vzame ime gostitelja ali naslov IP in preveri, ali je argument naveden.
- Če ni podanega nobenega argumenta, prikaže sporočilo o uporabi in se zapre.
- Uporablja ukaz ping z možnostjo -c 4 za pošiljanje štirih zahtev za odmev ICMP navedenemu gostitelju.
- 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.
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:
- ` #!/bin/bash `: vrstica shebang določa, da je treba skript interpretirati z lupino Bash.
- ` niz=(3 56 24 89 67) `: Niz je deklariran in inicializiran z vrednostmi.
- ` max=${matrika[0]} `: `max` se inicializira s prvim elementom matrike.
- ` za num v ${array[@]}; narediti `: zanka `za` se uporablja za ponavljanje elementov matrike.
- ` if ((num> max)); potem `: Stavek `if` preveri, ali je trenutni element `num` večji od trenutnega največjega `max`.
- ` max=$num`: če`num ` je večji od `max`, `max` se posodobi z vrednostjo num.
- ` Končano `: Zanka `za` je zaprta.
- ` echo Največji element v matriki je: $max `: Končno skript natisne največjo vrednost, najdeno v matriki.

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.

Vsota elementov
Izvedite več o lupinskih skriptih
- Razlika med lupino in jedrom
- Razlika med Bind Shell in Reverse Shell
- Uvod v lupino Linux in skriptno lupino
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.