logo

Exemples de script de Shell

Per a totes les distribucions de Linux, l'script shell és com una vareta màgica que automatitza el procés, estalvia temps als usuaris i augmenta la productivitat. Aquest tutorial de scripting us introduirà als 25 exemples de scripting.

Però abans de passar al tema de shell scripting Per exemple, entenem l'script d'intèrpret d'ordres i els casos d'ús reals de l'script d'intèrpret d'ordres.

Què és Shell Script?

Bé, la closca és una CLI ( intèrpret de línia d'ordres ), que s'executa en una finestra de text on els usuaris poden gestionar i executar ordres de shell. D'altra banda, el procés d'escriure un conjunt d'ordres que s'executaran en un sistema Linux Un fitxer que inclou aquestes instruccions s'anomena script bash.



Usos dels scripts de Shell

A continuació es mostren alguns usos habituals de Shell Script:

  • Automatització de tasques – Es pot utilitzar per automatitzar tasques repetitives com ara còpies de seguretat habituals i tasques d'instal·lació de programari.
  • Personalització - Es pot utilitzar scripts d'intèrpret d'ordres per dissenyar el seu entorn de línia d'ordres i realitzar fàcilment la seva tasca segons les necessitats.
  • Gestió de fitxers - Els scripts d'intèrpret d'ordres també es poden utilitzar per gestionar i manipular fitxers i directoris, com ara moure, copiar, canviar el nom o suprimir fitxers.

Exemples de script de Shell a Linux

1) Què indica el shebang (#!) al començament d'un script de shell?

El shebang (#!) al principi d'un script indica l'intèrpret que s'ha d'utilitzar per executar l'script. Indica al sistema quin shell o intèrpret ha d'interpretar les ordres de l'script.

Per exemple: Suposem que tenim un script anomenat myscript.sh escrit a l'intèrpret d'ordres Bash:

com concatenar cadenes en java
shebang

shebang

En aquest exemple:

  • El #!/bin/bash al començament de l'script indica que l'script s'ha d'interpretar mitjançant l'intèrpret d'ordres Bash.
  • Les ordres d'eco s'utilitzen per imprimir missatges al terminal.

2) Com executeu un script de shell des de la línia d'ordres?

Per executar un script de shell des de la línia d'ordres, hem de seguir aquests passos:

  • Assegureu-vos que el fitxer d'script tingui permisos executables mitjançant l' comanda chmod :
chmod +x myscript.sh>
  • Executeu l'script utilitzant el seu nom de fitxer:
./myscript.sh>

Aquí has ​​de substituir myscrtipt.sh amb el nom d'escriptura anterior.

3) Escriviu un script d'intèrpret d'ordres que imprimeixi techcodeview.com al terminal.

Creeu un nom d'script `myscript.sh` (estem utilitzant ` perquè ` editor, podeu triar qualsevol editor)

vim myscript.sh>

#!/bin/bash
# Aquest script imprimeix techcodeview.com al terminal
echo techcodeview.com

Nom d'impressió

Nom d'impressió

Fem que el nostre script sigui executable utilitzant `chmod +x` i després executem amb `./myscipt.sh` i obtenim la nostra sortida desitjada techcodeview.com.

4) Expliqueu el propòsit de l'ordre echo en els scripts de shell.

El comanda d'eco s'utilitza per mostrar text o variables al terminal. S'utilitza habitualment per imprimir missatges, valors variables i generar resultats del programa.

434

comanda d'eco

En aquest exemple hem executat `echo` directament al terminal, ja que funciona igual dins de l'script de shell.

5) Com es pot assignar un valor a una variable en un script de shell?

Les variables s'assignen valors mitjançant l'operador d'assignació =.

Per exemple:

#!/bin/bash
# Assignació d'un valor a una variable
nom=Jayesh
edat = 21
echo $nom $edat

Explicació:

  • A la variable de nom se li assigna el valor Jayesh.
  • A la variable edat se li assigna el valor 21.
  • echo s'utilitza per imprimir i `$name` `$age` s'utilitza per cridar el valor emmagatzemat a les variables.

435

6) Escriu un script de shell que prengui el nom d'un usuari com a entrada i el saludi.

Creeu un nom d'script `example.sh`.

#!/bin/bash
# Demaneu el seu nom a l'usuari
echo Com et dius?
llegir el nom
# Saludeu l'usuari
echo Hola, $name! Encantat de conèixer-te.

Explicació:

  • #!/bin/bash: aquesta és la línia shebang. Indica al sistema que utilitzi l'intèrpret Bash per executar l'script.
  • # Demaneu el seu nom a l'usuari: Això és un comentari. Proporciona context sobre el codi proper. Els comentaris són ignorats per l'intèrpret.
  • echo Com et dius?: L'ordre echo s'utilitza per mostrar el text entre cometes dobles al terminal.
  • read name: l'ordre read espera que l'usuari introdueixi text i l'emmagatzema al nom de la variable.
  • echo Hola, $name! Encantat de conèixer-te.: Aquesta línia utilitza l'ordre echo per imprimir un missatge de salutació que inclou el valor de la variable de nom, que es va recopilar de l'entrada de l'usuari.

436

7) Com s'afegeixen comentaris a un script de shell?

Comentaris en shell script s'utilitzen per proporcionar explicacions o context al codi. L'intèrpret els ignora i només estan pensats per als humans que llegeixen el guió. Podeu afegir comentaris amb el símbol #.

#!/bin/bash
# Aquest és un comentari que explica el propòsit del guió
eco gfg

8) Creeu un script d'intèrpret d'ordres que comprovi si existeix un fitxer al directori actual.

Aquí hi ha un script que verifica si un fitxer anomenat example.txt existeix al directori actual:

#!/bin/bash
fitxer=exemple.txt
# Comproveu si el fitxer existeix
if [ -e $fitxer ]; aleshores
echo El fitxer existeix: $fitxer
altra cosa
echo No s'ha trobat el fitxer: $fitxer
ser

Explicació:

  1. #!/bin/bash: Aquesta és la línia shebang que especifica l'intèrpret (/bin/bash) que s'utilitzarà per executar l'script.
  2. file=example.txt: aquesta línia defineix el fitxer variable i li assigna el valor example.txt. Podeu substituir-lo pel nom del fitxer que voleu comprovar.
  3. if [ -e $fitxer ]; then: Aquesta línia comença una sentència if. La condició [ -e $fitxer ] comprova si el fitxer especificat pel valor de la variable de fitxer existeix. El senyalador -e s'utilitza per comprovar l'existència de fitxers.
  4. echo El fitxer existeix: $fitxer: si la condició és certa (és a dir, el fitxer existeix), aquesta línia imprimeix un missatge que indica que el fitxer existeix, juntament amb el nom del fitxer.
  5. else: si la condició és falsa (és a dir, el fitxer no existeix), l'script executa el codi a la branca else.
  6. echo No s'ha trobat el fitxer: $fitxer: aquesta línia imprimeix un missatge d'error que indica que no s'ha trobat el fitxer especificat, juntament amb el nom del fitxer.
  7. fi: Aquesta línia marca el final de la instrucció if.
Trobar fitxer

Trobar fitxer

9) Quina diferència hi ha entre cometes simples (‘) i cometes dobles () en els scripts de shell?

Les cometes simples (‘) i les cometes dobles () s'utilitzen per incloure cadenes en els scripts d'intèrpret d'ordres, però tenen comportaments diferents:

  • Cometes simples: tot el que hi ha entre cometes simples es tracta com una cadena literal. Els noms de variables i la majoria de caràcters especials no s'amplien.
  • Cometes dobles: s'amplien les variables i certs caràcters especials dins de cometes dobles. Els continguts estan subjectes a substitució de variables i substitució d'ordres.

#!/bin/bash

abcd=Hola
echo ‘$abcd’ # Sortida: $abcd
echo $abcd # Sortida: Hola

10) Com podeu utilitzar arguments de línia d'ordres en un script de shell?

Arguments de la línia d'ordres són valors proporcionats a un script quan s'executa. S'hi pot accedir dins de l'script mitjançant variables especials com , , etc., on representa el primer argument, representa el segon argument, etc.

Per exemple: Si el nostre nom d'script a `example.sh`

#!/bin/bash

echo Nom de l'script:

Per a totes les distribucions de Linux, l'script shell és com una vareta màgica que automatitza el procés, estalvia temps als usuaris i augmenta la productivitat. Aquest tutorial de scripting us introduirà als 25 exemples de scripting.

Però abans de passar al tema de shell scripting Per exemple, entenem l'script d'intèrpret d'ordres i els casos d'ús reals de l'script d'intèrpret d'ordres.

Què és Shell Script?

Bé, la closca és una CLI ( intèrpret de línia d'ordres ), que s'executa en una finestra de text on els usuaris poden gestionar i executar ordres de shell. D'altra banda, el procés d'escriure un conjunt d'ordres que s'executaran en un sistema Linux Un fitxer que inclou aquestes instruccions s'anomena script bash.

Usos dels scripts de Shell

A continuació es mostren alguns usos habituals de Shell Script:

  • Automatització de tasques – Es pot utilitzar per automatitzar tasques repetitives com ara còpies de seguretat habituals i tasques d'instal·lació de programari.
  • Personalització - Es pot utilitzar scripts d'intèrpret d'ordres per dissenyar el seu entorn de línia d'ordres i realitzar fàcilment la seva tasca segons les necessitats.
  • Gestió de fitxers - Els scripts d'intèrpret d'ordres també es poden utilitzar per gestionar i manipular fitxers i directoris, com ara moure, copiar, canviar el nom o suprimir fitxers.

Exemples de script de Shell a Linux

1) Què indica el shebang (#!) al començament d'un script de shell?

El shebang (#!) al principi d'un script indica l'intèrpret que s'ha d'utilitzar per executar l'script. Indica al sistema quin shell o intèrpret ha d'interpretar les ordres de l'script.

Per exemple: Suposem que tenim un script anomenat myscript.sh escrit a l'intèrpret d'ordres Bash:

shebang

shebang

En aquest exemple:

  • El #!/bin/bash al començament de l'script indica que l'script s'ha d'interpretar mitjançant l'intèrpret d'ordres Bash.
  • Les ordres d'eco s'utilitzen per imprimir missatges al terminal.

2) Com executeu un script de shell des de la línia d'ordres?

Per executar un script de shell des de la línia d'ordres, hem de seguir aquests passos:

  • Assegureu-vos que el fitxer d'script tingui permisos executables mitjançant l' comanda chmod :
chmod +x myscript.sh>
  • Executeu l'script utilitzant el seu nom de fitxer:
./myscript.sh>

Aquí has ​​de substituir myscrtipt.sh amb el nom d'escriptura anterior.

3) Escriviu un script d'intèrpret d'ordres que imprimeixi techcodeview.com al terminal.

Creeu un nom d'script `myscript.sh` (estem utilitzant ` perquè ` editor, podeu triar qualsevol editor)

vim myscript.sh>

#!/bin/bash
# Aquest script imprimeix techcodeview.com al terminal
echo techcodeview.com

Nom d'impressió

Nom d'impressió

Fem que el nostre script sigui executable utilitzant `chmod +x` i després executem amb `./myscipt.sh` i obtenim la nostra sortida desitjada techcodeview.com.

4) Expliqueu el propòsit de l'ordre echo en els scripts de shell.

El comanda d'eco s'utilitza per mostrar text o variables al terminal. S'utilitza habitualment per imprimir missatges, valors variables i generar resultats del programa.

434

comanda d'eco

En aquest exemple hem executat `echo` directament al terminal, ja que funciona igual dins de l'script de shell.

5) Com es pot assignar un valor a una variable en un script de shell?

Les variables s'assignen valors mitjançant l'operador d'assignació =.

Per exemple:

#!/bin/bash
# Assignació d'un valor a una variable
nom=Jayesh
edat = 21
echo $nom $edat

Explicació:

  • A la variable de nom se li assigna el valor Jayesh.
  • A la variable edat se li assigna el valor 21.
  • echo s'utilitza per imprimir i `$name` `$age` s'utilitza per cridar el valor emmagatzemat a les variables.

435

6) Escriu un script de shell que prengui el nom d'un usuari com a entrada i el saludi.

Creeu un nom d'script `example.sh`.

#!/bin/bash
# Demaneu el seu nom a l'usuari
echo Com et dius?
llegir el nom
# Saludeu l'usuari
echo Hola, $name! Encantat de conèixer-te.

Explicació:

  • #!/bin/bash: aquesta és la línia shebang. Indica al sistema que utilitzi l'intèrpret Bash per executar l'script.
  • # Demaneu el seu nom a l'usuari: Això és un comentari. Proporciona context sobre el codi proper. Els comentaris són ignorats per l'intèrpret.
  • echo Com et dius?: L'ordre echo s'utilitza per mostrar el text entre cometes dobles al terminal.
  • read name: l'ordre read espera que l'usuari introdueixi text i l'emmagatzema al nom de la variable.
  • echo Hola, $name! Encantat de conèixer-te.: Aquesta línia utilitza l'ordre echo per imprimir un missatge de salutació que inclou el valor de la variable de nom, que es va recopilar de l'entrada de l'usuari.

436

7) Com s'afegeixen comentaris a un script de shell?

Comentaris en shell script s'utilitzen per proporcionar explicacions o context al codi. L'intèrpret els ignora i només estan pensats per als humans que llegeixen el guió. Podeu afegir comentaris amb el símbol #.

#!/bin/bash
# Aquest és un comentari que explica el propòsit del guió
eco gfg

8) Creeu un script d'intèrpret d'ordres que comprovi si existeix un fitxer al directori actual.

Aquí hi ha un script que verifica si un fitxer anomenat example.txt existeix al directori actual:

#!/bin/bash
fitxer=exemple.txt
# Comproveu si el fitxer existeix
if [ -e $fitxer ]; aleshores
echo El fitxer existeix: $fitxer
altra cosa
echo No s'ha trobat el fitxer: $fitxer
ser

Explicació:

  1. #!/bin/bash: Aquesta és la línia shebang que especifica l'intèrpret (/bin/bash) que s'utilitzarà per executar l'script.
  2. file=example.txt: aquesta línia defineix el fitxer variable i li assigna el valor example.txt. Podeu substituir-lo pel nom del fitxer que voleu comprovar.
  3. if [ -e $fitxer ]; then: Aquesta línia comença una sentència if. La condició [ -e $fitxer ] comprova si el fitxer especificat pel valor de la variable de fitxer existeix. El senyalador -e s'utilitza per comprovar l'existència de fitxers.
  4. echo El fitxer existeix: $fitxer: si la condició és certa (és a dir, el fitxer existeix), aquesta línia imprimeix un missatge que indica que el fitxer existeix, juntament amb el nom del fitxer.
  5. else: si la condició és falsa (és a dir, el fitxer no existeix), l'script executa el codi a la branca else.
  6. echo No s'ha trobat el fitxer: $fitxer: aquesta línia imprimeix un missatge d'error que indica que no s'ha trobat el fitxer especificat, juntament amb el nom del fitxer.
  7. fi: Aquesta línia marca el final de la instrucció if.
Trobar fitxer

Trobar fitxer

9) Quina diferència hi ha entre cometes simples (‘) i cometes dobles () en els scripts de shell?

Les cometes simples (‘) i les cometes dobles () s'utilitzen per incloure cadenes en els scripts d'intèrpret d'ordres, però tenen comportaments diferents:

  • Cometes simples: tot el que hi ha entre cometes simples es tracta com una cadena literal. Els noms de variables i la majoria de caràcters especials no s'amplien.
  • Cometes dobles: s'amplien les variables i certs caràcters especials dins de cometes dobles. Els continguts estan subjectes a substitució de variables i substitució d'ordres.

#!/bin/bash

abcd=Hola
echo ‘$abcd’ # Sortida: $abcd
echo $abcd # Sortida: Hola

10) Com podeu utilitzar arguments de línia d'ordres en un script de shell?

Arguments de la línia d'ordres són valors proporcionats a un script quan s'executa. S'hi pot accedir dins de l'script mitjançant variables especials com $1, $2, etc., on $1 representa el primer argument, $2 representa el segon argument, etc.

Per exemple: Si el nostre nom d'script a `example.sh`

#!/bin/bash

echo Nom de l'script: $0
echo Primer argument: $1
echo Segon argument: $2

Si executem l'script amb `.example.sh hello_1 hello_2`, sortirà:

cli arguments

cli arguments

11) Com s'utilitza el bucle for per recórrer una llista de valors?

Creeu un nom d'script `example.sh`.

#!/bin/bash

fruites=(data de cirera poma i plàtan)
per a fruites a ${fruits[@]}; fer
echo Fruita actual: $fruit
fet

Explicació:

La línia `fruits=` crea una matriu anomenada fruites amb quatre elements: poma, plàtan, cirera i dàtil.

  • per a fruites a ${fruits[@]}; do: aquesta línia comença un bucle for. Aquí teniu el significat de cada part:
  • for fruit: declara una variable de bucle anomenada fruit. En cada iteració del bucle, fruit mantindrà el valor de l'element actual de la matriu de fruites.
  • ${fruits[@]}: aquesta és una expansió de matriu que pren tots els elements de la matriu de fruites. La sintaxi ${…} garanteix que cada element es tracti com un element separat.
  • do: aquesta paraula clau marca l'inici del cos del bucle.
  • echo Fruit actual: $fruit: Dins del bucle, aquesta línia utilitza l'ordre echo per mostrar el valor actual de la variable de bucle fruit. Imprimeix un missatge com ara Fruit actual: poma per a cada fruita de la matriu.
  • fet: aquesta paraula clau marca el final del cos del bucle. Indica a l'script que el bucle ha acabat.
per bucle

per bucle

12) Escriu un script d'intèrpret d'ordres que calculi la suma dels nombres enters d'1 a N mitjançant un bucle.

Creeu un nom d'script `example.sh`.

#!/bin/bash

echo Introduïu un número (N):
llegir N
suma=0
per (( i=1; i<=$N; i++ )); fer
suma=$((suma + i))
fet
echo La suma dels nombres enters d'1 a $N és: $sum

Explicació:
L'script comença demanant-vos que introduïu un número (N) mitjançant la lectura. Aquest número determinarà quantes vegades s'executa el bucle.

  1. La variable suma s'inicialitza a 0. Aquesta variable farà un seguiment de la suma dels nombres enters.
  2. El bucle for comença amb for (( i=1; i<=$N; i++ )). Aquesta estructura de bucle s'utilitza per repetir un conjunt d'accions un nombre determinat de vegades, en aquest cas, des d'1 fins al valor de N.
  3. Dins del bucle, passen aquestes coses:
    • i=1 estableix la variable de bucle i a 1 al començament de cada iteració.
    • La condició de bucle i<=$N comprova si i encara és menor o igual que el nombre donat N.
    • Si la condició és certa, el cos del bucle s'executa.
    • sum=$((suma + i)) calcula el nou valor de suma afegint-hi el valor actual de i. Això suma els nombres enters de 1 al valor i actual.
  4. Després de cada iteració, i++ augmenta el valor de i en 1.
  5. El bucle continua funcionant fins que la condició i<=$N esdevé falsa (quan i és més gran que N).
  6. Un cop finalitza el bucle, l'script mostra la suma dels nombres enters des de l'1 fins al número introduït N.

439

13) Creeu un script que cerqui una paraula específica en un fitxer i compta les seves ocurrències.

Creeu un nom d'script `word_count.sh`

#!/bin/bash

echo Introduïu la paraula per cercar:
llegir paraula_destinació
echo Introduïu el nom del fitxer:
llegir el nom del fitxer
count=$(grep -o -w $paraula_objectiu $nomfitxer | wc -l)
echo La paraula '$target_word' apareix $count times a '$filename'.

Explicació:

  • echo Introduïu la paraula a cercar:: Aquesta línia mostra un missatge demanant a l'usuari que introdueixi una paraula que vol cercar en un fitxer.
  • read target_word: Aquesta línia llegeix l'entrada proporcionada per l'usuari i l'emmagatzema en una variable anomenada target_word.
  • echo Introduïu el nom del fitxer:: Aquesta línia mostra un missatge demanant a l'usuari que introdueixi el nom del fitxer en què vol cercar.
  • llegir nom de fitxer: aquesta línia llegeix l'entrada proporcionada per l'usuari i l'emmagatzema en una variable anomenada nom de fitxer.
  • count=$(grep -o -w $target_word $filename | wc -l): Aquesta línia fa el treball principal de l'script. Anem a desglossar-ho més:
    • grep -o -w $target_word $filename: aquesta part de l'ordre cerca les ocurrències de la paraula_destinació al nom de fitxer especificat. Les opcions -o i -w asseguren que només es compten les coincidències de paraules senceres.
    • |: Aquesta és una canalització, que pren la sortida de l'ordre anterior i l'envia com a entrada a l'ordre següent.
    • wc -l: aquesta part de l'ordre utilitza l'ordre wc per comptar el nombre de línies de l'entrada. L'opció -l compta específicament les línies.
    • L'ordre sencera calcula el recompte d'ocurrències de la paraula_destinació al fitxer i assigna aquest recompte a la variable count

441

14) Expliqueu les diferències entre la sortida estàndard (stdout) i l'error estàndard (stderr).

La diferència principal entre la sortida estàndard (stdout) i l'error estàndard (stderr) és la següent:

  • Sortida estàndard (stdout): Aquest és el flux de sortida predeterminat on va la sortida normal d'una ordre. Es mostra al terminal de manera predeterminada. Podeu redirigir-lo a un fitxer mitjançant>.
  • Error estàndard (stderr): Aquest és el flux de sortida dels missatges d'error i advertències. També es mostra al terminal de manera predeterminada. Podeu redirigir-lo a un fitxer mitjançant 2>.

15) Expliqueu el concepte de sentències condicionals en shell scripting.

Declaracions condicionals en scripts de shell ens permeten prendre decisions i controlar el flux del nostre guió en funció de determinades condicions. Permeten que el nostre script executi diferents conjunts d'ordres depenent de si una condició concreta és certa o falsa. Les sentències condicionals primàries en els scripts d'intèrpret d'ordres són la sentència if, la sentència elif (opcional) i la sentència else (opcional).

A continuació, es mostra l'estructura bàsica d'una instrucció condicional en scripts de shell:

si [condició]; aleshores
# Ordres per executar si la condició és certa
elif [una altra_condició]; aleshores
# Ordres per executar si una altra_condició és certa (opcional)
altra cosa
# Ordres per executar si cap de les condicions és certa (opcional)
ser

Explicació:

  • [condició] = Ordre que avalua la condició i retorna un estat de sortida veritable (0) o fals (no zero).
  • then = És una paraula clau que indica que les ordres que la segueixen s'executaran si la condició s'avalua com a vertadera.
  • elif = (abreviatura de else if) És una secció que ens permet especificar condicions addicionals per comprovar.
  • else = és una secció que conté ordres que s'executaran si cap de les condicions és certa.
  • fi = És una paraula clau que marca el final del bloc condicional.

16) Com llegiu les línies d'un fitxer dins d'un script de shell?

A llegir línies des d'un fitxer dins d'un script d'intèrpret d'ordres, podem utilitzar diversos mètodes, però un enfocament comú és utilitzar un bucle while en combinació amb l'ordre read. Així és com ho podem fer:

#!/bin/bash
fitxer=/home/jayeshkumar/jayesh.txt
# Comproveu si el fitxer existeix
if [ -e $fitxer ]; aleshores
mentre que IFS= llegeix la línia -r; fer
echo Line read: $line
# Afegiu aquí la vostra lògica de processament
fet <$fitxer
altra cosa
echo No s'ha trobat el fitxer: $fitxer
ser

Explicació:

  1. #!/bin/bash: Aquesta és la línia shebang que especifica l'intèrpret (/bin/bash) que s'utilitzarà per executar l'script.
  2. file=/home/jayeshkumar/jayesh.txt: aquesta línia defineix el fitxer variable i assigna el camí complet al fitxer jayesh.txt al directori /home/jayeshkumar. Canvieu aquest camí perquè coincideixi amb el camí real del fitxer que voleu llegir.
  3. if [ -e $fitxer ]; then: Aquesta línia comença una sentència if. Comprova si el fitxer especificat per la variable $file existeix. El senyalador -e comprova l'existència del fitxer.
  4. mentre que IFS= llegeix la línia -r; do: aquesta línia inicia un bucle while que llegeix les línies del fitxer.
    • IFS=: l'IFS (Internal Field Separator) s'estableix en un valor buit per preservar els espais inicials i finals.
    • read -r line: llegeix la línia actual del fitxer i l'emmagatzema a la línia variable.
  5. echo Line read: $line: Aquesta línia imprimeix el contingut de la línia que s'ha llegit del fitxer. La variable $line conté el contingut de la línia actual.
  6. # Afegiu la vostra lògica de processament aquí: aquest és un comentari de marcador de posició on podeu afegir la vostra pròpia lògica per processar cada línia. Per exemple, podeu analitzar la línia, extreure informació o realitzar accions específiques basades en el contingut.
  7. done <$file: Això marca el final del bucle while. El < $file redirigeix ​​el contingut del fitxer per ser llegit pel bucle.
  8. else: si el fitxer no existeix (la condició de la instrucció if és falsa), l'script executa el codi a la branca else.
  9. echo No s'ha trobat el fitxer: $fitxer: aquesta línia imprimeix un missatge d'error que indica que no s'ha trobat el fitxer especificat.
  10. fi: Aquesta línia marca el final de la instrucció if.
fitxer de lectura

fitxer de lectura

Aquí hem utilitzat ` pwd ` comanda per obtenir la ruta del directori actual.

17) Escriu una funció en un script de shell que calculi el factorial d'un nombre donat.

Aquí teniu el guió quecalcula el factoriald'un nombre donat.

#!/bin/bash
# Definiu una funció per calcular factorial
calcula_factorial() {
num=$1
fet = 1
per ((i=1; i<=núm; i++)); fer
fet=$((fet * i))
fet
echo $fet
}
# Demaneu a l'usuari que introdueixi un número
echo Introduïu un número:
llegir input_num
# Truqueu a la funció calculate_factorial amb el número d'entrada
factor_result=$(calcular_factorial $núm_entrada)
# Mostra el resultat factorial
echo El factor de $núm_entrada és: $resultat_factorial

Explicació:

  1. L'script comença amb la línia shebang #!/bin/bash per especificar l'intèrpret.
  2. calculate_factorial() es defineix com una funció. Es necessita un argument, num, que és el nombre pel qual s'ha de calcular el factorial.
  3. Dins de la funció, fact s'inicialitza a 1. Aquesta variable emmagatzemarà el resultat factorial.
  4. El bucle for itera des de l'1 fins al nombre donat (num). En cada iteració, multiplica el valor actual de fet per l'índex de bucle i.
  5. Un cop finalitzat el bucle, la variable de fet conté el factorial calculat.
  6. L'script demana a l'usuari que introdueixi un número mitjançant la lectura.
  7. La funció calculate_factorial es crida amb el número proporcionat per l'usuari i el resultat s'emmagatzema a la variable factorial_result.
  8. Finalment, l'script mostra el resultat factorial calculat.
Factorial

Factorial

18) Com gestioneu senyals com Ctrl + C en un script de shell?

En un script d'intèrpret d'ordres, podeu gestionar senyals com Ctrl+C (també conegut com SIGINT) mitjançant l'ordre trap. Ctrl+C genera un senyal SIGINT quan l'usuari el prem per interrompre l'script o programa en execució. Mitjançant l'ordre trap, podeu especificar les accions que cal dur a terme quan es rep un senyal concret. A continuació s'explica com gestioneu senyals com Ctrl+C en un script de shell:

#!/bin/bash
netejar() {
echo Script interromput. S'està fent la neteja...
# Afegeix aquí les teves accions de neteja
sortida 1
}
# Configureu una trampa per trucar a la funció de neteja quan es rebi Ctrl+C (SIGINT).
neteja de paranys SIGINT
# La resta del vostre guió
echo Corrent...
dormir 10
eco Acabat.

El maneig dels senyals és important per fer que els scripts siguin robusts i assegurar-se que gestionen les interrupcions inesperades amb gràcia. Podeu personalitzar la funció de neteja perquè s'ajusti a les vostres necessitats específiques, com ara tancar fitxers, aturar processos o registrar informació abans que surti l'script.

Explicació:

  1. #!/bin/bash: aquesta línia shebang especifica l'intèrpret que s'utilitzarà per executar l'script.
  2. cleanup() { … }: Això defineix una funció anomenada cleanup. Dins d'aquesta funció, podeu incloure qualsevol acció que s'hagi de realitzar quan s'interromp l'script, com ara tancar fitxers, alliberar recursos o realitzar altres tasques de neteja.
  3. trap cleanup SIGINT: l'ordre trap s'utilitza per configurar un controlador de senyal. En aquest cas, especifica que quan es rep el senyal SIGINT (Ctrl+C), s'ha d'executar la funció de neteja.
  4. echo Running..., sleep 10, echo Finished.: Són només ordres d'exemple per simular l'execució d'un script.

446

19) Creeu un script que cerqui i elimineu les línies duplicades en un fitxer de text.

Aquí teniu el nostre guió de Linux en el qual eliminarem les línies duplicades d'un fitxer de text.

#!/bin/bash
fitxer_entrada=input.txt
fitxer_output=output.txt
ordena $fitxer_entrada | uniq> $fitxer_sortida
echo Les línies duplicades s'han eliminat correctament.

Explicació:

  1. L'script comença amb un shebang (#!/bin/bash), que indica que l'script s'ha d'interpretar mitjançant l'intèrpret d'ordres Bash.
  2. La variable input_file s'estableix amb el nom del fitxer d'entrada que conté línies duplicades (canvieu-ho pel nom del fitxer d'entrada real).
  3. La variable output_file s'estableix amb el nom del fitxer de sortida on s'eliminaran els duplicats (canvieu-ho pel nom del fitxer de sortida desitjat).
  4. L'script utilitza l'ordre sort per ordenar les línies del fitxer d'entrada. L'ordenació de les línies garanteix que les línies duplicades s'agrupin.
  5. A continuació, les línies ordenades es passen per l'ordre uniq, que elimina les línies duplicades consecutives. La sortida d'aquest procés es redirigeix ​​al fitxer de sortida.
  6. Després d'eliminar els duplicats, l'script imprimeix un missatge d'èxit.
eliminació de línies duplicades

eliminació de línies duplicades

Aquí, fem servir ` gat ` per mostrar el text dins del fitxer de text.

20) Escriu un script que generi una contrasenya aleatòria segura.

Aquí teniu el nostre script per generar una contrasenya aleatòria segura.

#!/bin/bash
# Funció per generar una contrasenya aleatòria
genera_contrasenya() {
tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
}
# Truqueu a la funció i emmagatzemeu la contrasenya generada
contrasenya=$(genera_contrasenya)
echo Contrasenya generada: $contrasenya

Nota: En conseqüència, l'usuari pot canviar la longitud de la contrasenya substituint el número '12'.

Explicació:

  1. L'script comença amb un shebang (#!/bin/bash), que indica que s'ha d'interpretar mitjançant l'intèrpret d'ordres Bash.
  2. La funció generate_password està definida per generar una contrasenya aleatòria. Així és com funciona:
    • tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
    • fold -w 12 divideix les dades aleatòries filtrades en línies d'amplada de 12 caràcters cadascuna.
    • head -n 1 selecciona la primera línia, donant-nos efectivament una seqüència aleatòria de caràcters de longitud 12.
  3. La variable de contrasenya s'assigna el resultat de cridar la funció generate_password.
  4. Finalment, la contrasenya generada es mostra amb echo.

448

21) Escriviu un script de shell que calculi la mida total de tots els fitxers d'un directori.

Aquí hi ha un script de shell per calcular la mida total de tots els fitxers d'un directori.

#!/bin/bash
directori=/camí/al/teu/directori
total_size=$(du -csh $directori | grep total | awk '{print $1}')
echo Mida total dels fitxers a $directory: $total_size

Explicació:

  1. L'script comença amb #!/bin/bash shebang, que indica que s'ha d'interpretar mitjançant l'intèrpret d'ordres Bash.
  2. La variable de directori s'estableix a la ruta del directori per al qual voleu calcular la mida total del fitxer. Substituïu /path/to/your/directory pel camí real.
  3. L'ordre du s'utilitza per estimar l'ús d'espai de fitxers. Les opcions utilitzades són:
    • -c: Produeix un gran total.
    • -s: Mostra només la mida total del directori especificat.
    • -h: mides d'impressió en un format llegible per persones (p. ex., KB, MB, GB).
  4. La sortida de du s'envia a grep total per filtrar la línia que conté la mida total.
  5. awk '{print $1}' s'utilitza per extreure el primer camp (mida total) de la línia.
  6. La mida total calculada s'emmagatzema a la variable total_size.
  7. Finalment, l'script mostra la mida total mitjançant echo.
Mida total dels fitxers

Mida total dels fitxers

Aquí hem utilitzat ` pwd ` per veure la ruta del directori actual.

22) Expliqueu la diferència entre les declaracions if i elif en els scripts d'intèrpret d'ordres.

Característica `si`Staiftement Declaració 'elif'.
Propòsit Expliqueu la diferència entre les declaracions if i elif en els scripts de shell. Proporciona condicions alternatives per comprovar quan la condició inicial si és falsa.
ús S'utilitza per a la condició inicial. S'utilitza després de la condició si inicial per comprovar condicions addicionals.
nombre de blocs Només pot tenir un bloc si. Pot tenir diversos blocs elif, però només un altre bloc (opcional).
Execució Executa el bloc de codi associat a la instrucció if si la condició és certa. Si la condició és falsa, s'executa el bloc else (si està present) (opcional). Comprova cada condició elif en ordre. Si una condició elif és certa, s'executa el bloc de codi corresponent i l'script surt de tot el bloc condicional. Si cap de les condicions elif és certa, s'executa el bloc else (si està present).
Estructures imbricades Es pot imbricar dins d'altres blocs if, elif o else. No es pot niuar dins d'un altre bloc elif, però es pot utilitzar dins d'un bloc if o else.

Entenem-ho amb un exemple.

#!/bin/bash
nombre=5
if [ $número -gt 10 ]; aleshores
echo $número és més gran que 10
altra cosa
echo $número no és més gran que 10
ser
eco ———
if [ $número -gt 10 ]; aleshores
echo $número és més gran que 10
elif [ $número -eq 10 ]; aleshores
echo $número és igual a 10
altra cosa
echo $número és inferior a 10
ser

Explicació:

En aquest exemple, el primer bloc if comprova si el nombre és més gran que 10. Si no, imprimeix un missatge que indica que el nombre no és superior a 10. El segon bloc amb declaracions elif verifica múltiples condicions seqüencialment fins que una d'elles és certa. En aquest cas, com que el valor del nombre és 5, la sortida serà:

if_elif diferència

if_elif diferència

23) Com s'utilitza un bucle while per executar ordres repetidament?

Un bucle while s'utilitza en els scripts d'intèrpret d'ordres per executar repetidament un conjunt d'ordres sempre que una condició especificada sigui certa. El bucle continua executant les ordres fins que la condició esdevé falsa.

Aquí teniu la sintaxi bàsica d'un bucle while:

mentre que [condició]; fer
# Ordres a executar
fet

Explicació:

  1. El bucle `while` comença amb la paraula clau `while` seguida d'una condició entre claudàtors `[ ]`.
  2. El cos del bucle, que conté les ordres que s'han d'executar, es troba dins de les paraules clau 'do' i 'fet'.
  3. El bucle comprova primer la condició. Si la condició és certa, s'executen les ordres dins del cos del bucle. Un cop s'executa el cos del bucle, la condició es torna a comprovar i el procés es repeteix fins que la condició esdevé falsa.

Exemple: Si volem imprimir números de l'1 al 5

#!/bin/bash
comptador=1
mentre que [ $comptador -le 5 ]; fer
echo Number: $comptador
comptador=$((comptador + 1))
fet

Explicació:

  • La variable del comptador s'estableix a 1.
  • El bucle while comprova si el valor del comptador és menor o igual a 5. Mentre aquesta condició sigui certa, el bucle continua executant-se.
  • Dins del bucle, el valor actual del comptador s'imprimeix mitjançant echo.
  • El comptador s'incrementa en 1 mitjançant l'expressió $((comptador + 1)).
bucle while

bucle while

24) Creeu un script d'intèrpret d'ordres que trobi i llista tots els fitxers buits d'un directori.

Script de Shell que podeu utilitzar per trobar i llistar tots els fitxers buits d'un directori mitjançant les ordres `find' i `stat`:

#!/bin/bash
directori=$1″
if [ -z $directori ]; aleshores
echo Ús: $0
sortida 1
ser

si [ ! -d $directori ]; aleshores
echo Error: '$directory' no és un directori vàlid.
sortida 1
ser
echo Fitxers buits al directori $:
cerca $directory -type f -empty

Explicació:

  1. ` #!/bin/bash `: Això s'anomena shebang i diu al sistema operatiu que utilitzi l'intèrpret d'ordres Bash per interpretar i executar l'script.
  2. ` directori=$1″ `: Aquesta línia assigna el primer argument de la línia d'ordres (indicat per $1) a la variable ` directori `.
  3. ` if [ -z $directori ]; aleshores `: Aquesta línia comença una instrucció if que verifica si el ` directori ` La variable està buida (-z prova una cadena buida).
  4. ` echo Ús: $0 `: Si el directori està buit, aquesta línia imprimeix un missatge d'ús, on ` $0 ` representa el nom del guió.
  5. ` sortida 1 `: aquesta línia surt de l'script amb un codi de sortida de ` 1 `, que indica un error.
  6. ` ser `: aquesta línia marca el final del ` si ` declaració.
  7. ` si [ ! -d $directori ]; aleshores `: S'inicia una altra instrucció if per comprovar si el directori proporcionat existeix (` -d ` proves per a un directori).
  8. ` echo Error: '$directory' no és un directori vàlid. `: Si el directori proporcionat no existeix, aquesta línia imprimeix un missatge d'error.
  9. ` sortida 1 `: surt de l'script amb un codi de sortida de ` 1 `.
  10. ` ser `: Marca el final del segon ` si' declaració.
  11. ` echo Fitxers buits al directori $: `: Si tot és vàlid fins ara, aquesta línia imprimeix un missatge que indica que l'script enumerarà els fitxers buits al directori especificat.
  12. ` cerca $directory -type f -empty `: aquesta línia utilitza el ` trobar ` ordre per cercar fitxers buits (` -buit `) de tipus fitxers normals (` -tipus f `) al directori especificat. A continuació, enumera aquests fitxers buits.
Trobar fitxers buits

Trobar fitxers buits

Nota : Hem de proporcionar un directori com a argument en executar l'script. Aquí hem utilitzat la ruta del directori actual home/jayeshkumar/

25) Quin és l'objectiu de l'ordre de lectura en els scripts d'intèrpret d'ordres?

L'ordre de lectura dels scripts d'intèrpret d'ordres permet que l'script us demani informació. És com quan un ordinador et fa una pregunta i espera la teva resposta. Això és útil per a scripts que necessiten que escriviu alguna cosa o per quan l'script necessita treballar amb informació dels fitxers. L'ordre de lectura ajuda a aturar l'script i esperar el que escriviu, i després pot utilitzar aquesta informació per fer més coses a l'script.

Sintaxi de l'ordre de lectura:

read variable_name>

Exemple : Si volem prendre el nom com a entrada de l'usuari per imprimir-lo.

#!/bin/bash
echo Introduïu el vostre nom:
llegir el nom
echo Hola, $name!

453

llegir nom

En resum, l'ordre read s'utilitza per capturar l'entrada de l'usuari o les dades dels fitxers dins dels scripts d'intèrpret d'ordres, fent que els scripts siguin més interactius i versàtils.

26) Escriu un script d'intèrpret d'ordres que converteixi tots els noms de fitxers d'un directori a minúscules.

Aquí hi ha un script d'intèrpret d'ordres que converteix tots els noms de fitxer d'un directori a minúscules.

#!/bin/bash
directori=$1″
if [ -z $directori ]; aleshores
echo Ús: $0
sortida 1
ser

si [ ! -d $directori ]; aleshores

echo Error: '$directory' no és un directori vàlid.
sortida 1
ser

cd $directori || sortida 1

per al fitxer en *; fer
if [ -f $fitxer ]; aleshores
nounom=$(eco $fitxer | tr ‘A-Z’ ‘a-z’)
[ $fitxer != $nom nou ] && mv $fitxer $nom nou
ser
fet

Explicació:

  1. #!/bin/bash : Aquest és el shebang, que especifica que l'script s'ha d'interpretar mitjançant l'intèrpret d'ordres Bash.
  2. directori=$1″ : Aquesta línia assigna el primer argument de la línia d'ordres al directori de variables.
  3. if [ -z $directori ]; aleshores : Aquesta línia comprova si la variable de directori està buida (no es proporciona cap argument en executar l'script).
  4. echo Ús: $0 : Si el directori està buit, aquesta línia imprimeix un missatge d'ús amb el nom de l'script ($0).
  5. sortida 1 : Aquesta línia surt de l'script amb un codi de sortida 1, que indica que s'ha produït un error.
  6. f i: Això marca el final de la primera declaració if.
  7. si [ ! -d $directori]; aleshores : Aquesta línia comprova si el directori especificat no existeix (-d prova per a un directori).
  8. echo Error: '$directory' no és un directori vàlid. : Si el directori especificat no existeix, aquesta línia imprimeix un missatge d'error.
  9. sortida 1 : surt de l'script amb un codi de sortida d'1.
  10. ser : Marca el final de la segona declaració if.
  11. cd $directori || sortida 1 : Canvia el directori de treball actual al directori especificat. Si el canvi de directori falla (p. ex., directori inexistent), l'script surt amb un codi d'error.
  12. per al fitxer en *; fer: jo per al fitxer en *; fer: inicia un bucle que itera sobre tots els elements del directori actual (* coincideix amb tots els noms de fitxer).
  13. if [ -f $fitxer ]; aleshores : Comprova si l'element d'iteració del bucle actual és un fitxer normal (-f prova per a un fitxer normal).
  14. nounom=$(eco $fitxer | tr ‘A-Z’ ‘a-z’) : Converteix el nom del fitxer actual ($fitxer) a minúscules mitjançant l'ordre tr i emmagatzema el resultat a la variable newname.
  15. [ $fitxer != $nom nou ] && mv $fitxer $nom nou : compara el nom del fitxer original amb el nou nom del fitxer en minúscules. Si són diferents, canvia el nom del fitxer mitjançant l'ordre mv.
  16. ser : Marca el final de la declaració si interna.
  17. fet : Marca el final del bucle.

454

Nota : Hem de proporcionar un directori com a argument en executar l'script. Aquí hem utilitzat la ruta del directori actual home/jayeshkumar/test

27) Com podeu utilitzar operacions aritmètiques dins d'un script de shell?

Les operacions aritmètiques es poden realitzar dins d'un script de shell utilitzant diversos mètodes integrats. L'intèrpret d'ordres proporciona mecanismes per a càlculs aritmètics simples mitjançant l'expansió aritmètica Com:

  1. Expansió aritmètica ($((…)))
  2. Utilitzant l'ordre expr
  3. Utilitzant el comandament let

Aquí teniu el nostre script Shell que explica els tres mètodes per a operacions aritmètiques.

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

#Expansió aritmètica ($((…)))

resultat=$((núm1 + núm2))
echo Suma: $resultat

#Usant l'ordre expr

suma=$(expr $núm1 + $núm2)
echo Suma: $sum

#Usant el comandament let

siguem suma = num1 + num2
echo Suma: $sum

Explicació:

  1. `#!/bin/bash` : Aquest és el shebang, que especifica que l'script s'ha d'interpretar mitjançant l'intèrpret d'ordres Bash.
  2. `núm1=10` i ` num2=5` : Aquestes línies assignen els valors 10 i 5 a les variables ` num1 ` i ` num2 `, respectivament.
  3. `#Expansió aritmètica ($((…)))` : Aquest és un comentari que indica l'inici de la secció que demostra l'expansió aritmètica.
  4. `resultat=$((núm1 + núm2))` : Aquesta línia utilitza l'expansió aritmètica per calcular la suma de ` núm1 ` i ` num2 ` i emmagatzema el resultat al fitxer ` resultat ` variable.
  5. `echo Sum: $resultat` : Aquesta línia imprimeix la suma calculada utilitzant el valor emmagatzemat al ` resultat ` variable.
  6. `#Usant l'ordre expr` : Aquest és un comentari que indica l'inici de la secció que demostra l'ús del ` expr ` ordre per a operacions aritmètiques.
  7. `suma=$(expr $núm1 + $núm2)` : Aquesta línia utilitza el ` expr ` ordre per calcular la suma de ` núm1 ` i ` num2 ` i emmagatzema el resultat al fitxer ` suma ` variable. Tingueu en compte que el ` expr L'ordre ` requereix espais al voltant dels operadors.
  8. `echo Sum: $sum` : Aquesta línia imprimeix la suma calculada utilitzant el valor emmagatzemat al ` suma ` variable.
  9. `#Usant l'ordre let` : Aquest és un comentari que indica l'inici de la secció que demostra l'ús del ` deixar ` ordre per a operacions aritmètiques.
  10. `deixar suma = num1 + num2″` : Aquesta línia utilitza el ` deixar ` ordre per calcular la suma de ` núm1 ` i ` num2 ` i assigna el resultat a ` suma ` variable. El ` deixar L'ordre ` no requereix espais al voltant dels operadors.
  11. `echo Sum: $sum` : Aquesta línia imprimeix la suma calculada utilitzant el valor emmagatzemat al ` suma ` variable.
aritmètica

aritmètica

28) Creeu un script que comprovi si es pot accedir a un host de xarxa.

Aquí hi ha un script d'intèrpret d'ordres senzill que utilitza l'ordre ping per comprovar si es pot accedir a un host de xarxa:

#!/bin/bash
amfitrió=$1″
if [ -z $amfitrió ]; aleshores
echo Ús: $0
sortida 1
ser
ping -c 4 $host

si [ $? -eq 0]; aleshores
echo $host és accessible.
altra cosa
echo $host no és accessible.
ser

Explicació:

  1. Pren un nom d'amfitrió o una adreça IP com a argument i comprova si es proporciona l'argument.
  2. Si no es proporciona cap argument, mostra un missatge d'ús i surt.
  3. Utilitza l'ordre ping amb l'opció -c 4 per enviar quatre sol·licituds d'eco ICMP a l'amfitrió especificat.
  4. Després d'executar l'ordre ping, comprova l'estat de sortida ($?). Si l'estat de sortida és 0, vol dir que l'amfitrió és accessible i l'script imprimeix un missatge d'èxit. En cas contrari, imprimeix un missatge d'error.

456

Nota : Hem de proporcionar un nom d'amfitrió com a argument quan executem l'script. Aquí hem utilitzat google.com

29) Escriu un script de Shell per trobar l'element més gran d'una matriu:

Aquí hi ha un script de shell per trobar l'element més gran d'una matriu.

#!/bin/bash
# Declarar una matriu
matriu=(3 56 24 89 67)

# Inicialitzeu una variable per emmagatzemar el valor màxim, començant pel primer element

max=${array[0]}

# Iterar per la matriu

per num a ${array[@]}; fer

# Compara cada element amb el màxim actual

si ((número> màxim)); aleshores
màxim=$núm
ser
fet

# Imprimeix el valor màxim

echo L'element màxim de la matriu és: $max

Explicació:

  1. ` #!/bin/bash `: La línia shebang especifica que l'script s'ha d'interpretar mitjançant l'intèrpret d'ordres Bash.
  2. ` matriu=(3 56 24 89 67) `: La matriu es declara i s'inicia amb valors.
  3. ` max=${array[0]} `: `max` s'inicialitza amb el primer element de la matriu.
  4. ` per num a ${array[@]}; fer `: Un bucle `for` s'utilitza per iterar pels elements de la matriu.
  5. ` si ((número> màxim)); aleshores `: Una instrucció `if` verifica si l'element actual `num` és més gran que el màxim actual `max`.
  6. ` max=$num`: Si`núm ` és més gran que `max`, `max` s'actualitza amb el valor de num.
  7. ` fet `: El bucle `for` està tancat.
  8. ` echo L'element màxim de la matriu és: $max `: Finalment, l'script imprimeix el valor màxim trobat a la matriu.
461

nombre més gran

30) Escriu un guió per calcular la suma dels elements d'una matriu.

#!/bin/bash

# Declarar una matriu

matriu=(1 65 22 19 94)

# Inicialitzar una variable per emmagatzemar la suma

suma=0

# Iterar per la matriu i afegir cada element a la suma

per num a ${array[@]}; fer
am=$((am + am))
fet

# Imprimeix la suma

echo La suma d'elements de la matriu és: $sum

Explicació:

` #!/bin/bash `: La línia shebang especifica que l'script s'ha d'interpretar mitjançant l'intèrpret d'ordres Bash.

` matriu=(1 65 22 19 94) `: La matriu es declara i s'inicia amb valors.

` suma=0 `: ` suma ` s'inicia a zero per contenir la suma d'elements.

` per num a ${array[@]}; fer `: A` per ` bucle s'utilitza per iterar a través dels elements de la matriu.

` am=$((am + am)) `: Dins del bucle, cada element ` en una ` s'afegeix al ` suma ` variable.

` fet `: El ` per ` el bucle està tancat.

`echo La suma d'elements de la matriu és: $sum`: Finalment, l'script imprimeix la suma de tots els elements de la matriu.

462

Suma d'elements

Més informació sobre els scripts de Shell

Conclusió

Tots els geeks sabem que el shell script és molt útil per augmentar la productivitat del treball i també per estalviar temps. Per tant, en aquest article hem tractat 30 exemples de scripts d'intèrpret d'ordres molt útils i la majoria d'estafadors . Esperem que aquesta guia completa sobre l'exemple de shell script us ajudi a entendre tot sobre els shell scripts.




echo Primer argument:
echo Segon argument:

Si executem l'script amb `.example.sh hello_1 hello_2`, sortirà:

cli arguments

cli arguments

11) Com s'utilitza el bucle for per recórrer una llista de valors?

Creeu un nom d'script `example.sh`.

#!/bin/bash

fruites=(data de cirera poma i plàtan)
per a fruites a ${fruits[@]}; fer
echo Fruita actual: $fruit
fet

Explicació:

La línia `fruits=` crea una matriu anomenada fruites amb quatre elements: poma, plàtan, cirera i dàtil.

  • per a fruites a ${fruits[@]}; do: aquesta línia comença un bucle for. Aquí teniu el significat de cada part:
  • for fruit: declara una variable de bucle anomenada fruit. En cada iteració del bucle, fruit mantindrà el valor de l'element actual de la matriu de fruites.
  • ${fruits[@]}: aquesta és una expansió de matriu que pren tots els elements de la matriu de fruites. La sintaxi ${…} garanteix que cada element es tracti com un element separat.
  • do: aquesta paraula clau marca l'inici del cos del bucle.
  • echo Fruit actual: $fruit: Dins del bucle, aquesta línia utilitza l'ordre echo per mostrar el valor actual de la variable de bucle fruit. Imprimeix un missatge com ara Fruit actual: poma per a cada fruita de la matriu.
  • fet: aquesta paraula clau marca el final del cos del bucle. Indica a l'script que el bucle ha acabat.
per bucle

per bucle

12) Escriu un script d'intèrpret d'ordres que calculi la suma dels nombres enters d'1 a N mitjançant un bucle.

Creeu un nom d'script `example.sh`.

#!/bin/bash

echo Introduïu un número (N):
llegir N
suma=0
per (( i=1; i<=$N; i++ )); fer
suma=$((suma + i))
fet
echo La suma dels nombres enters d'1 a $N és: $sum

Explicació:
L'script comença demanant-vos que introduïu un número (N) mitjançant la lectura. Aquest número determinarà quantes vegades s'executa el bucle.

  1. La variable suma s'inicialitza a 0. Aquesta variable farà un seguiment de la suma dels nombres enters.
  2. El bucle for comença amb for (( i=1; i<=$N; i++ )). Aquesta estructura de bucle s'utilitza per repetir un conjunt d'accions un nombre determinat de vegades, en aquest cas, des d'1 fins al valor de N.
  3. Dins del bucle, passen aquestes coses:
    • i=1 estableix la variable de bucle i a 1 al començament de cada iteració.
    • La condició de bucle i<=$N comprova si i encara és menor o igual que el nombre donat N.
    • Si la condició és certa, el cos del bucle s'executa.
    • sum=$((suma + i)) calcula el nou valor de suma afegint-hi el valor actual de i. Això suma els nombres enters de 1 al valor i actual.
  4. Després de cada iteració, i++ augmenta el valor de i en 1.
  5. El bucle continua funcionant fins que la condició i<=$N esdevé falsa (quan i és més gran que N).
  6. Un cop finalitza el bucle, l'script mostra la suma dels nombres enters des de l'1 fins al número introduït N.

439

13) Creeu un script que cerqui una paraula específica en un fitxer i compta les seves ocurrències.

Creeu un nom d'script `word_count.sh`

#!/bin/bash

echo Introduïu la paraula per cercar:
llegir paraula_destinació
echo Introduïu el nom del fitxer:
llegir el nom del fitxer
count=$(grep -o -w $paraula_objectiu $nomfitxer | wc -l)
echo La paraula '$target_word' apareix $count times a '$filename'.

Explicació:

  • echo Introduïu la paraula a cercar:: Aquesta línia mostra un missatge demanant a l'usuari que introdueixi una paraula que vol cercar en un fitxer.
  • read target_word: Aquesta línia llegeix l'entrada proporcionada per l'usuari i l'emmagatzema en una variable anomenada target_word.
  • echo Introduïu el nom del fitxer:: Aquesta línia mostra un missatge demanant a l'usuari que introdueixi el nom del fitxer en què vol cercar.
  • llegir nom de fitxer: aquesta línia llegeix l'entrada proporcionada per l'usuari i l'emmagatzema en una variable anomenada nom de fitxer.
  • count=$(grep -o -w $target_word $filename | wc -l): Aquesta línia fa el treball principal de l'script. Anem a desglossar-ho més:
    • grep -o -w $target_word $filename: aquesta part de l'ordre cerca les ocurrències de la paraula_destinació al nom de fitxer especificat. Les opcions -o i -w asseguren que només es compten les coincidències de paraules senceres.
    • |: Aquesta és una canalització, que pren la sortida de l'ordre anterior i l'envia com a entrada a l'ordre següent.
    • wc -l: aquesta part de l'ordre utilitza l'ordre wc per comptar el nombre de línies de l'entrada. L'opció -l compta específicament les línies.
    • L'ordre sencera calcula el recompte d'ocurrències de la paraula_destinació al fitxer i assigna aquest recompte a la variable count

441

14) Expliqueu les diferències entre la sortida estàndard (stdout) i l'error estàndard (stderr).

La diferència principal entre la sortida estàndard (stdout) i l'error estàndard (stderr) és la següent:

  • Sortida estàndard (stdout): Aquest és el flux de sortida predeterminat on va la sortida normal d'una ordre. Es mostra al terminal de manera predeterminada. Podeu redirigir-lo a un fitxer mitjançant>.
  • Error estàndard (stderr): Aquest és el flux de sortida dels missatges d'error i advertències. També es mostra al terminal de manera predeterminada. Podeu redirigir-lo a un fitxer mitjançant 2>.

15) Expliqueu el concepte de sentències condicionals en shell scripting.

Declaracions condicionals en scripts de shell ens permeten prendre decisions i controlar el flux del nostre guió en funció de determinades condicions. Permeten que el nostre script executi diferents conjunts d'ordres depenent de si una condició concreta és certa o falsa. Les sentències condicionals primàries en els scripts d'intèrpret d'ordres són la sentència if, la sentència elif (opcional) i la sentència else (opcional).

A continuació, es mostra l'estructura bàsica d'una instrucció condicional en scripts de shell:

si [condició]; aleshores
# Ordres per executar si la condició és certa
elif [una altra_condició]; aleshores
# Ordres per executar si una altra_condició és certa (opcional)
altra cosa
# Ordres per executar si cap de les condicions és certa (opcional)
ser

Explicació:

  • [condició] = Ordre que avalua la condició i retorna un estat de sortida veritable (0) o fals (no zero).
  • then = És una paraula clau que indica que les ordres que la segueixen s'executaran si la condició s'avalua com a vertadera.
  • elif = (abreviatura de else if) És una secció que ens permet especificar condicions addicionals per comprovar.
  • else = és una secció que conté ordres que s'executaran si cap de les condicions és certa.
  • fi = És una paraula clau que marca el final del bloc condicional.

16) Com llegiu les línies d'un fitxer dins d'un script de shell?

A llegir línies des d'un fitxer dins d'un script d'intèrpret d'ordres, podem utilitzar diversos mètodes, però un enfocament comú és utilitzar un bucle while en combinació amb l'ordre read. Així és com ho podem fer:

#!/bin/bash
fitxer=/home/jayeshkumar/jayesh.txt
# Comproveu si el fitxer existeix
if [ -e $fitxer ]; aleshores
mentre que IFS= llegeix la línia -r; fer
echo Line read: $line
# Afegiu aquí la vostra lògica de processament
fet <$fitxer
altra cosa
echo No s'ha trobat el fitxer: $fitxer
ser

Explicació:

  1. #!/bin/bash: Aquesta és la línia shebang que especifica l'intèrpret (/bin/bash) que s'utilitzarà per executar l'script.
  2. file=/home/jayeshkumar/jayesh.txt: aquesta línia defineix el fitxer variable i assigna el camí complet al fitxer jayesh.txt al directori /home/jayeshkumar. Canvieu aquest camí perquè coincideixi amb el camí real del fitxer que voleu llegir.
  3. if [ -e $fitxer ]; then: Aquesta línia comença una sentència if. Comprova si el fitxer especificat per la variable $file existeix. El senyalador -e comprova l'existència del fitxer.
  4. mentre que IFS= llegeix la línia -r; do: aquesta línia inicia un bucle while que llegeix les línies del fitxer.
    • IFS=: l'IFS (Internal Field Separator) s'estableix en un valor buit per preservar els espais inicials i finals.
    • read -r line: llegeix la línia actual del fitxer i l'emmagatzema a la línia variable.
  5. echo Line read: $line: Aquesta línia imprimeix el contingut de la línia que s'ha llegit del fitxer. La variable $line conté el contingut de la línia actual.
  6. # Afegiu la vostra lògica de processament aquí: aquest és un comentari de marcador de posició on podeu afegir la vostra pròpia lògica per processar cada línia. Per exemple, podeu analitzar la línia, extreure informació o realitzar accions específiques basades en el contingut.
  7. done <$file: Això marca el final del bucle while. El < $file redirigeix ​​el contingut del fitxer per ser llegit pel bucle.
  8. else: si el fitxer no existeix (la condició de la instrucció if és falsa), l'script executa el codi a la branca else.
  9. echo No s'ha trobat el fitxer: $fitxer: aquesta línia imprimeix un missatge d'error que indica que no s'ha trobat el fitxer especificat.
  10. fi: Aquesta línia marca el final de la instrucció if.
fitxer de lectura

fitxer de lectura

Aquí hem utilitzat ` pwd ` comanda per obtenir la ruta del directori actual.

17) Escriu una funció en un script de shell que calculi el factorial d'un nombre donat.

Aquí teniu el guió quecalcula el factoriald'un nombre donat.

#!/bin/bash
# Definiu una funció per calcular factorial
calcula_factorial() {
num=
fet = 1
per ((i=1; i<=núm; i++)); fer
fet=$((fet * i))
fet
echo $fet
}
# Demaneu a l'usuari que introdueixi un número
echo Introduïu un número:
llegir input_num
# Truqueu a la funció calculate_factorial amb el número d'entrada
factor_result=$(calcular_factorial $núm_entrada)
# Mostra el resultat factorial
echo El factor de $núm_entrada és: $resultat_factorial

Explicació:

  1. L'script comença amb la línia shebang #!/bin/bash per especificar l'intèrpret.
  2. calculate_factorial() es defineix com una funció. Es necessita un argument, num, que és el nombre pel qual s'ha de calcular el factorial.
  3. Dins de la funció, fact s'inicialitza a 1. Aquesta variable emmagatzemarà el resultat factorial.
  4. El bucle for itera des de l'1 fins al nombre donat (num). En cada iteració, multiplica el valor actual de fet per l'índex de bucle i.
  5. Un cop finalitzat el bucle, la variable de fet conté el factorial calculat.
  6. L'script demana a l'usuari que introdueixi un número mitjançant la lectura.
  7. La funció calculate_factorial es crida amb el número proporcionat per l'usuari i el resultat s'emmagatzema a la variable factorial_result.
  8. Finalment, l'script mostra el resultat factorial calculat.
Factorial

Factorial

18) Com gestioneu senyals com Ctrl + C en un script de shell?

En un script d'intèrpret d'ordres, podeu gestionar senyals com Ctrl+C (també conegut com SIGINT) mitjançant l'ordre trap. Ctrl+C genera un senyal SIGINT quan l'usuari el prem per interrompre l'script o programa en execució. Mitjançant l'ordre trap, podeu especificar les accions que cal dur a terme quan es rep un senyal concret. A continuació s'explica com gestioneu senyals com Ctrl+C en un script de shell:

#!/bin/bash
netejar() {
echo Script interromput. S'està fent la neteja...
# Afegeix aquí les teves accions de neteja
sortida 1
}
# Configureu una trampa per trucar a la funció de neteja quan es rebi Ctrl+C (SIGINT).
neteja de paranys SIGINT
# La resta del vostre guió
echo Corrent...
dormir 10
eco Acabat.

El maneig dels senyals és important per fer que els scripts siguin robusts i assegurar-se que gestionen les interrupcions inesperades amb gràcia. Podeu personalitzar la funció de neteja perquè s'ajusti a les vostres necessitats específiques, com ara tancar fitxers, aturar processos o registrar informació abans que surti l'script.

Explicació:

declaració java switch
  1. #!/bin/bash: aquesta línia shebang especifica l'intèrpret que s'utilitzarà per executar l'script.
  2. cleanup() { … }: Això defineix una funció anomenada cleanup. Dins d'aquesta funció, podeu incloure qualsevol acció que s'hagi de realitzar quan s'interromp l'script, com ara tancar fitxers, alliberar recursos o realitzar altres tasques de neteja.
  3. trap cleanup SIGINT: l'ordre trap s'utilitza per configurar un controlador de senyal. En aquest cas, especifica que quan es rep el senyal SIGINT (Ctrl+C), s'ha d'executar la funció de neteja.
  4. echo Running..., sleep 10, echo Finished.: Són només ordres d'exemple per simular l'execució d'un script.

446

19) Creeu un script que cerqui i elimineu les línies duplicades en un fitxer de text.

Aquí teniu el nostre guió de Linux en el qual eliminarem les línies duplicades d'un fitxer de text.

#!/bin/bash
fitxer_entrada=input.txt
fitxer_output=output.txt
ordena $fitxer_entrada | uniq> $fitxer_sortida
echo Les línies duplicades s'han eliminat correctament.

Explicació:

  1. L'script comença amb un shebang (#!/bin/bash), que indica que l'script s'ha d'interpretar mitjançant l'intèrpret d'ordres Bash.
  2. La variable input_file s'estableix amb el nom del fitxer d'entrada que conté línies duplicades (canvieu-ho pel nom del fitxer d'entrada real).
  3. La variable output_file s'estableix amb el nom del fitxer de sortida on s'eliminaran els duplicats (canvieu-ho pel nom del fitxer de sortida desitjat).
  4. L'script utilitza l'ordre sort per ordenar les línies del fitxer d'entrada. L'ordenació de les línies garanteix que les línies duplicades s'agrupin.
  5. A continuació, les línies ordenades es passen per l'ordre uniq, que elimina les línies duplicades consecutives. La sortida d'aquest procés es redirigeix ​​al fitxer de sortida.
  6. Després d'eliminar els duplicats, l'script imprimeix un missatge d'èxit.
eliminació de línies duplicades

eliminació de línies duplicades

Aquí, fem servir ` gat ` per mostrar el text dins del fitxer de text.

20) Escriu un script que generi una contrasenya aleatòria segura.

Aquí teniu el nostre script per generar una contrasenya aleatòria segura.

#!/bin/bash
# Funció per generar una contrasenya aleatòria
genera_contrasenya() {
tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
}
# Truqueu a la funció i emmagatzemeu la contrasenya generada
contrasenya=$(genera_contrasenya)
echo Contrasenya generada: $contrasenya

Nota: En conseqüència, l'usuari pot canviar la longitud de la contrasenya substituint el número '12'.

Explicació:

  1. L'script comença amb un shebang (#!/bin/bash), que indica que s'ha d'interpretar mitjançant l'intèrpret d'ordres Bash.
  2. La funció generate_password està definida per generar una contrasenya aleatòria. Així és com funciona:
    • tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
    • fold -w 12 divideix les dades aleatòries filtrades en línies d'amplada de 12 caràcters cadascuna.
    • head -n 1 selecciona la primera línia, donant-nos efectivament una seqüència aleatòria de caràcters de longitud 12.
  3. La variable de contrasenya s'assigna el resultat de cridar la funció generate_password.
  4. Finalment, la contrasenya generada es mostra amb echo.

448

21) Escriviu un script de shell que calculi la mida total de tots els fitxers d'un directori.

Aquí hi ha un script de shell per calcular la mida total de tots els fitxers d'un directori.

#!/bin/bash
directori=/camí/al/teu/directori
total_size=$(du -csh $directori | grep total | awk '{print }')
echo Mida total dels fitxers a $directory: $total_size

edat dharmendra

Explicació:

  1. L'script comença amb #!/bin/bash shebang, que indica que s'ha d'interpretar mitjançant l'intèrpret d'ordres Bash.
  2. La variable de directori s'estableix a la ruta del directori per al qual voleu calcular la mida total del fitxer. Substituïu /path/to/your/directory pel camí real.
  3. L'ordre du s'utilitza per estimar l'ús d'espai de fitxers. Les opcions utilitzades són:
    • -c: Produeix un gran total.
    • -s: Mostra només la mida total del directori especificat.
    • -h: mides d'impressió en un format llegible per persones (p. ex., KB, MB, GB).
  4. La sortida de du s'envia a grep total per filtrar la línia que conté la mida total.
  5. awk '{print }' s'utilitza per extreure el primer camp (mida total) de la línia.
  6. La mida total calculada s'emmagatzema a la variable total_size.
  7. Finalment, l'script mostra la mida total mitjançant echo.
Mida total dels fitxers

Mida total dels fitxers

Aquí hem utilitzat ` pwd ` per veure la ruta del directori actual.

22) Expliqueu la diferència entre les declaracions if i elif en els scripts d'intèrpret d'ordres.

Característica `si`Staiftement Declaració 'elif'.
Propòsit Expliqueu la diferència entre les declaracions if i elif en els scripts de shell. Proporciona condicions alternatives per comprovar quan la condició inicial si és falsa.
ús S'utilitza per a la condició inicial. S'utilitza després de la condició si inicial per comprovar condicions addicionals.
nombre de blocs Només pot tenir un bloc si. Pot tenir diversos blocs elif, però només un altre bloc (opcional).
Execució Executa el bloc de codi associat a la instrucció if si la condició és certa. Si la condició és falsa, s'executa el bloc else (si està present) (opcional). Comprova cada condició elif en ordre. Si una condició elif és certa, s'executa el bloc de codi corresponent i l'script surt de tot el bloc condicional. Si cap de les condicions elif és certa, s'executa el bloc else (si està present).
Estructures imbricades Es pot imbricar dins d'altres blocs if, elif o else. No es pot niuar dins d'un altre bloc elif, però es pot utilitzar dins d'un bloc if o else.

Entenem-ho amb un exemple.

#!/bin/bash
nombre=5
if [ $número -gt 10 ]; aleshores
echo $número és més gran que 10
altra cosa
echo $número no és més gran que 10
ser
eco ———
if [ $número -gt 10 ]; aleshores
echo $número és més gran que 10
elif [ $número -eq 10 ]; aleshores
echo $número és igual a 10
altra cosa
echo $número és inferior a 10
ser

Explicació:

En aquest exemple, el primer bloc if comprova si el nombre és més gran que 10. Si no, imprimeix un missatge que indica que el nombre no és superior a 10. El segon bloc amb declaracions elif verifica múltiples condicions seqüencialment fins que una d'elles és certa. En aquest cas, com que el valor del nombre és 5, la sortida serà:

if_elif diferència

if_elif diferència

23) Com s'utilitza un bucle while per executar ordres repetidament?

Un bucle while s'utilitza en els scripts d'intèrpret d'ordres per executar repetidament un conjunt d'ordres sempre que una condició especificada sigui certa. El bucle continua executant les ordres fins que la condició esdevé falsa.

Aquí teniu la sintaxi bàsica d'un bucle while:

mentre que [condició]; fer
# Ordres a executar
fet

Explicació:

  1. El bucle `while` comença amb la paraula clau `while` seguida d'una condició entre claudàtors `[ ]`.
  2. El cos del bucle, que conté les ordres que s'han d'executar, es troba dins de les paraules clau 'do' i 'fet'.
  3. El bucle comprova primer la condició. Si la condició és certa, s'executen les ordres dins del cos del bucle. Un cop s'executa el cos del bucle, la condició es torna a comprovar i el procés es repeteix fins que la condició esdevé falsa.

Exemple: Si volem imprimir números de l'1 al 5

#!/bin/bash
comptador=1
mentre que [ $comptador -le 5 ]; fer
echo Number: $comptador
comptador=$((comptador + 1))
fet

Explicació:

  • La variable del comptador s'estableix a 1.
  • El bucle while comprova si el valor del comptador és menor o igual a 5. Mentre aquesta condició sigui certa, el bucle continua executant-se.
  • Dins del bucle, el valor actual del comptador s'imprimeix mitjançant echo.
  • El comptador s'incrementa en 1 mitjançant l'expressió $((comptador + 1)).
bucle while

bucle while

24) Creeu un script d'intèrpret d'ordres que trobi i llista tots els fitxers buits d'un directori.

Script de Shell que podeu utilitzar per trobar i llistar tots els fitxers buits d'un directori mitjançant les ordres `find' i `stat`:

#!/bin/bash
directori=″
if [ -z $directori ]; aleshores
echo Ús:

Per a totes les distribucions de Linux, l'script shell és com una vareta màgica que automatitza el procés, estalvia temps als usuaris i augmenta la productivitat. Aquest tutorial de scripting us introduirà als 25 exemples de scripting.

Però abans de passar al tema de shell scripting Per exemple, entenem l'script d'intèrpret d'ordres i els casos d'ús reals de l'script d'intèrpret d'ordres.

Què és Shell Script?

Bé, la closca és una CLI ( intèrpret de línia d'ordres ), que s'executa en una finestra de text on els usuaris poden gestionar i executar ordres de shell. D'altra banda, el procés d'escriure un conjunt d'ordres que s'executaran en un sistema Linux Un fitxer que inclou aquestes instruccions s'anomena script bash.

Usos dels scripts de Shell

A continuació es mostren alguns usos habituals de Shell Script:

  • Automatització de tasques – Es pot utilitzar per automatitzar tasques repetitives com ara còpies de seguretat habituals i tasques d'instal·lació de programari.
  • Personalització - Es pot utilitzar scripts d'intèrpret d'ordres per dissenyar el seu entorn de línia d'ordres i realitzar fàcilment la seva tasca segons les necessitats.
  • Gestió de fitxers - Els scripts d'intèrpret d'ordres també es poden utilitzar per gestionar i manipular fitxers i directoris, com ara moure, copiar, canviar el nom o suprimir fitxers.

Exemples de script de Shell a Linux

1) Què indica el shebang (#!) al començament d'un script de shell?

El shebang (#!) al principi d'un script indica l'intèrpret que s'ha d'utilitzar per executar l'script. Indica al sistema quin shell o intèrpret ha d'interpretar les ordres de l'script.

Per exemple: Suposem que tenim un script anomenat myscript.sh escrit a l'intèrpret d'ordres Bash:

shebang

shebang

En aquest exemple:

  • El #!/bin/bash al començament de l'script indica que l'script s'ha d'interpretar mitjançant l'intèrpret d'ordres Bash.
  • Les ordres d'eco s'utilitzen per imprimir missatges al terminal.

2) Com executeu un script de shell des de la línia d'ordres?

Per executar un script de shell des de la línia d'ordres, hem de seguir aquests passos:

  • Assegureu-vos que el fitxer d'script tingui permisos executables mitjançant l' comanda chmod :
chmod +x myscript.sh>
  • Executeu l'script utilitzant el seu nom de fitxer:
./myscript.sh>

Aquí has ​​de substituir myscrtipt.sh amb el nom d'escriptura anterior.

3) Escriviu un script d'intèrpret d'ordres que imprimeixi techcodeview.com al terminal.

Creeu un nom d'script `myscript.sh` (estem utilitzant ` perquè ` editor, podeu triar qualsevol editor)

vim myscript.sh>

#!/bin/bash
# Aquest script imprimeix techcodeview.com al terminal
echo techcodeview.com

Nom d'impressió

Nom d'impressió

Fem que el nostre script sigui executable utilitzant `chmod +x` i després executem amb `./myscipt.sh` i obtenim la nostra sortida desitjada techcodeview.com.

4) Expliqueu el propòsit de l'ordre echo en els scripts de shell.

El comanda d'eco s'utilitza per mostrar text o variables al terminal. S'utilitza habitualment per imprimir missatges, valors variables i generar resultats del programa.

434

comanda d'eco

En aquest exemple hem executat `echo` directament al terminal, ja que funciona igual dins de l'script de shell.

5) Com es pot assignar un valor a una variable en un script de shell?

Les variables s'assignen valors mitjançant l'operador d'assignació =.

Per exemple:

#!/bin/bash
# Assignació d'un valor a una variable
nom=Jayesh
edat = 21
echo $nom $edat

Explicació:

  • A la variable de nom se li assigna el valor Jayesh.
  • A la variable edat se li assigna el valor 21.
  • echo s'utilitza per imprimir i `$name` `$age` s'utilitza per cridar el valor emmagatzemat a les variables.

435

6) Escriu un script de shell que prengui el nom d'un usuari com a entrada i el saludi.

Creeu un nom d'script `example.sh`.

#!/bin/bash
# Demaneu el seu nom a l'usuari
echo Com et dius?
llegir el nom
# Saludeu l'usuari
echo Hola, $name! Encantat de conèixer-te.

Explicació:

  • #!/bin/bash: aquesta és la línia shebang. Indica al sistema que utilitzi l'intèrpret Bash per executar l'script.
  • # Demaneu el seu nom a l'usuari: Això és un comentari. Proporciona context sobre el codi proper. Els comentaris són ignorats per l'intèrpret.
  • echo Com et dius?: L'ordre echo s'utilitza per mostrar el text entre cometes dobles al terminal.
  • read name: l'ordre read espera que l'usuari introdueixi text i l'emmagatzema al nom de la variable.
  • echo Hola, $name! Encantat de conèixer-te.: Aquesta línia utilitza l'ordre echo per imprimir un missatge de salutació que inclou el valor de la variable de nom, que es va recopilar de l'entrada de l'usuari.

436

7) Com s'afegeixen comentaris a un script de shell?

Comentaris en shell script s'utilitzen per proporcionar explicacions o context al codi. L'intèrpret els ignora i només estan pensats per als humans que llegeixen el guió. Podeu afegir comentaris amb el símbol #.

#!/bin/bash
# Aquest és un comentari que explica el propòsit del guió
eco gfg

8) Creeu un script d'intèrpret d'ordres que comprovi si existeix un fitxer al directori actual.

Aquí hi ha un script que verifica si un fitxer anomenat example.txt existeix al directori actual:

#!/bin/bash
fitxer=exemple.txt
# Comproveu si el fitxer existeix
if [ -e $fitxer ]; aleshores
echo El fitxer existeix: $fitxer
altra cosa
echo No s'ha trobat el fitxer: $fitxer
ser

Explicació:

  1. #!/bin/bash: Aquesta és la línia shebang que especifica l'intèrpret (/bin/bash) que s'utilitzarà per executar l'script.
  2. file=example.txt: aquesta línia defineix el fitxer variable i li assigna el valor example.txt. Podeu substituir-lo pel nom del fitxer que voleu comprovar.
  3. if [ -e $fitxer ]; then: Aquesta línia comença una sentència if. La condició [ -e $fitxer ] comprova si el fitxer especificat pel valor de la variable de fitxer existeix. El senyalador -e s'utilitza per comprovar l'existència de fitxers.
  4. echo El fitxer existeix: $fitxer: si la condició és certa (és a dir, el fitxer existeix), aquesta línia imprimeix un missatge que indica que el fitxer existeix, juntament amb el nom del fitxer.
  5. else: si la condició és falsa (és a dir, el fitxer no existeix), l'script executa el codi a la branca else.
  6. echo No s'ha trobat el fitxer: $fitxer: aquesta línia imprimeix un missatge d'error que indica que no s'ha trobat el fitxer especificat, juntament amb el nom del fitxer.
  7. fi: Aquesta línia marca el final de la instrucció if.
Trobar fitxer

Trobar fitxer

9) Quina diferència hi ha entre cometes simples (‘) i cometes dobles () en els scripts de shell?

Les cometes simples (‘) i les cometes dobles () s'utilitzen per incloure cadenes en els scripts d'intèrpret d'ordres, però tenen comportaments diferents:

  • Cometes simples: tot el que hi ha entre cometes simples es tracta com una cadena literal. Els noms de variables i la majoria de caràcters especials no s'amplien.
  • Cometes dobles: s'amplien les variables i certs caràcters especials dins de cometes dobles. Els continguts estan subjectes a substitució de variables i substitució d'ordres.

#!/bin/bash

abcd=Hola
echo ‘$abcd’ # Sortida: $abcd
echo $abcd # Sortida: Hola

10) Com podeu utilitzar arguments de línia d'ordres en un script de shell?

Arguments de la línia d'ordres són valors proporcionats a un script quan s'executa. S'hi pot accedir dins de l'script mitjançant variables especials com $1, $2, etc., on $1 representa el primer argument, $2 representa el segon argument, etc.

Per exemple: Si el nostre nom d'script a `example.sh`

#!/bin/bash

echo Nom de l'script: $0
echo Primer argument: $1
echo Segon argument: $2

Si executem l'script amb `.example.sh hello_1 hello_2`, sortirà:

cli arguments

cli arguments

11) Com s'utilitza el bucle for per recórrer una llista de valors?

Creeu un nom d'script `example.sh`.

#!/bin/bash

fruites=(data de cirera poma i plàtan)
per a fruites a ${fruits[@]}; fer
echo Fruita actual: $fruit
fet

Explicació:

La línia `fruits=` crea una matriu anomenada fruites amb quatre elements: poma, plàtan, cirera i dàtil.

  • per a fruites a ${fruits[@]}; do: aquesta línia comença un bucle for. Aquí teniu el significat de cada part:
  • for fruit: declara una variable de bucle anomenada fruit. En cada iteració del bucle, fruit mantindrà el valor de l'element actual de la matriu de fruites.
  • ${fruits[@]}: aquesta és una expansió de matriu que pren tots els elements de la matriu de fruites. La sintaxi ${…} garanteix que cada element es tracti com un element separat.
  • do: aquesta paraula clau marca l'inici del cos del bucle.
  • echo Fruit actual: $fruit: Dins del bucle, aquesta línia utilitza l'ordre echo per mostrar el valor actual de la variable de bucle fruit. Imprimeix un missatge com ara Fruit actual: poma per a cada fruita de la matriu.
  • fet: aquesta paraula clau marca el final del cos del bucle. Indica a l'script que el bucle ha acabat.
per bucle

per bucle

12) Escriu un script d'intèrpret d'ordres que calculi la suma dels nombres enters d'1 a N mitjançant un bucle.

Creeu un nom d'script `example.sh`.

#!/bin/bash

echo Introduïu un número (N):
llegir N
suma=0
per (( i=1; i<=$N; i++ )); fer
suma=$((suma + i))
fet
echo La suma dels nombres enters d'1 a $N és: $sum

Explicació:
L'script comença demanant-vos que introduïu un número (N) mitjançant la lectura. Aquest número determinarà quantes vegades s'executa el bucle.

  1. La variable suma s'inicialitza a 0. Aquesta variable farà un seguiment de la suma dels nombres enters.
  2. El bucle for comença amb for (( i=1; i<=$N; i++ )). Aquesta estructura de bucle s'utilitza per repetir un conjunt d'accions un nombre determinat de vegades, en aquest cas, des d'1 fins al valor de N.
  3. Dins del bucle, passen aquestes coses:
    • i=1 estableix la variable de bucle i a 1 al començament de cada iteració.
    • La condició de bucle i<=$N comprova si i encara és menor o igual que el nombre donat N.
    • Si la condició és certa, el cos del bucle s'executa.
    • sum=$((suma + i)) calcula el nou valor de suma afegint-hi el valor actual de i. Això suma els nombres enters de 1 al valor i actual.
  4. Després de cada iteració, i++ augmenta el valor de i en 1.
  5. El bucle continua funcionant fins que la condició i<=$N esdevé falsa (quan i és més gran que N).
  6. Un cop finalitza el bucle, l'script mostra la suma dels nombres enters des de l'1 fins al número introduït N.

439

13) Creeu un script que cerqui una paraula específica en un fitxer i compta les seves ocurrències.

Creeu un nom d'script `word_count.sh`

#!/bin/bash

echo Introduïu la paraula per cercar:
llegir paraula_destinació
echo Introduïu el nom del fitxer:
llegir el nom del fitxer
count=$(grep -o -w $paraula_objectiu $nomfitxer | wc -l)
echo La paraula '$target_word' apareix $count times a '$filename'.

Explicació:

  • echo Introduïu la paraula a cercar:: Aquesta línia mostra un missatge demanant a l'usuari que introdueixi una paraula que vol cercar en un fitxer.
  • read target_word: Aquesta línia llegeix l'entrada proporcionada per l'usuari i l'emmagatzema en una variable anomenada target_word.
  • echo Introduïu el nom del fitxer:: Aquesta línia mostra un missatge demanant a l'usuari que introdueixi el nom del fitxer en què vol cercar.
  • llegir nom de fitxer: aquesta línia llegeix l'entrada proporcionada per l'usuari i l'emmagatzema en una variable anomenada nom de fitxer.
  • count=$(grep -o -w $target_word $filename | wc -l): Aquesta línia fa el treball principal de l'script. Anem a desglossar-ho més:
    • grep -o -w $target_word $filename: aquesta part de l'ordre cerca les ocurrències de la paraula_destinació al nom de fitxer especificat. Les opcions -o i -w asseguren que només es compten les coincidències de paraules senceres.
    • |: Aquesta és una canalització, que pren la sortida de l'ordre anterior i l'envia com a entrada a l'ordre següent.
    • wc -l: aquesta part de l'ordre utilitza l'ordre wc per comptar el nombre de línies de l'entrada. L'opció -l compta específicament les línies.
    • L'ordre sencera calcula el recompte d'ocurrències de la paraula_destinació al fitxer i assigna aquest recompte a la variable count

441

14) Expliqueu les diferències entre la sortida estàndard (stdout) i l'error estàndard (stderr).

La diferència principal entre la sortida estàndard (stdout) i l'error estàndard (stderr) és la següent:

  • Sortida estàndard (stdout): Aquest és el flux de sortida predeterminat on va la sortida normal d'una ordre. Es mostra al terminal de manera predeterminada. Podeu redirigir-lo a un fitxer mitjançant>.
  • Error estàndard (stderr): Aquest és el flux de sortida dels missatges d'error i advertències. També es mostra al terminal de manera predeterminada. Podeu redirigir-lo a un fitxer mitjançant 2>.

15) Expliqueu el concepte de sentències condicionals en shell scripting.

Declaracions condicionals en scripts de shell ens permeten prendre decisions i controlar el flux del nostre guió en funció de determinades condicions. Permeten que el nostre script executi diferents conjunts d'ordres depenent de si una condició concreta és certa o falsa. Les sentències condicionals primàries en els scripts d'intèrpret d'ordres són la sentència if, la sentència elif (opcional) i la sentència else (opcional).

A continuació, es mostra l'estructura bàsica d'una instrucció condicional en scripts de shell:

si [condició]; aleshores
# Ordres per executar si la condició és certa
elif [una altra_condició]; aleshores
# Ordres per executar si una altra_condició és certa (opcional)
altra cosa
# Ordres per executar si cap de les condicions és certa (opcional)
ser

Explicació:

  • [condició] = Ordre que avalua la condició i retorna un estat de sortida veritable (0) o fals (no zero).
  • then = És una paraula clau que indica que les ordres que la segueixen s'executaran si la condició s'avalua com a vertadera.
  • elif = (abreviatura de else if) És una secció que ens permet especificar condicions addicionals per comprovar.
  • else = és una secció que conté ordres que s'executaran si cap de les condicions és certa.
  • fi = És una paraula clau que marca el final del bloc condicional.

16) Com llegiu les línies d'un fitxer dins d'un script de shell?

A llegir línies des d'un fitxer dins d'un script d'intèrpret d'ordres, podem utilitzar diversos mètodes, però un enfocament comú és utilitzar un bucle while en combinació amb l'ordre read. Així és com ho podem fer:

#!/bin/bash
fitxer=/home/jayeshkumar/jayesh.txt
# Comproveu si el fitxer existeix
if [ -e $fitxer ]; aleshores
mentre que IFS= llegeix la línia -r; fer
echo Line read: $line
# Afegiu aquí la vostra lògica de processament
fet <$fitxer
altra cosa
echo No s'ha trobat el fitxer: $fitxer
ser

Explicació:

  1. #!/bin/bash: Aquesta és la línia shebang que especifica l'intèrpret (/bin/bash) que s'utilitzarà per executar l'script.
  2. file=/home/jayeshkumar/jayesh.txt: aquesta línia defineix el fitxer variable i assigna el camí complet al fitxer jayesh.txt al directori /home/jayeshkumar. Canvieu aquest camí perquè coincideixi amb el camí real del fitxer que voleu llegir.
  3. if [ -e $fitxer ]; then: Aquesta línia comença una sentència if. Comprova si el fitxer especificat per la variable $file existeix. El senyalador -e comprova l'existència del fitxer.
  4. mentre que IFS= llegeix la línia -r; do: aquesta línia inicia un bucle while que llegeix les línies del fitxer.
    • IFS=: l'IFS (Internal Field Separator) s'estableix en un valor buit per preservar els espais inicials i finals.
    • read -r line: llegeix la línia actual del fitxer i l'emmagatzema a la línia variable.
  5. echo Line read: $line: Aquesta línia imprimeix el contingut de la línia que s'ha llegit del fitxer. La variable $line conté el contingut de la línia actual.
  6. # Afegiu la vostra lògica de processament aquí: aquest és un comentari de marcador de posició on podeu afegir la vostra pròpia lògica per processar cada línia. Per exemple, podeu analitzar la línia, extreure informació o realitzar accions específiques basades en el contingut.
  7. done <$file: Això marca el final del bucle while. El < $file redirigeix ​​el contingut del fitxer per ser llegit pel bucle.
  8. else: si el fitxer no existeix (la condició de la instrucció if és falsa), l'script executa el codi a la branca else.
  9. echo No s'ha trobat el fitxer: $fitxer: aquesta línia imprimeix un missatge d'error que indica que no s'ha trobat el fitxer especificat.
  10. fi: Aquesta línia marca el final de la instrucció if.
fitxer de lectura

fitxer de lectura

Aquí hem utilitzat ` pwd ` comanda per obtenir la ruta del directori actual.

17) Escriu una funció en un script de shell que calculi el factorial d'un nombre donat.

Aquí teniu el guió quecalcula el factoriald'un nombre donat.

#!/bin/bash
# Definiu una funció per calcular factorial
calcula_factorial() {
num=$1
fet = 1
per ((i=1; i<=núm; i++)); fer
fet=$((fet * i))
fet
echo $fet
}
# Demaneu a l'usuari que introdueixi un número
echo Introduïu un número:
llegir input_num
# Truqueu a la funció calculate_factorial amb el número d'entrada
factor_result=$(calcular_factorial $núm_entrada)
# Mostra el resultat factorial
echo El factor de $núm_entrada és: $resultat_factorial

Explicació:

  1. L'script comença amb la línia shebang #!/bin/bash per especificar l'intèrpret.
  2. calculate_factorial() es defineix com una funció. Es necessita un argument, num, que és el nombre pel qual s'ha de calcular el factorial.
  3. Dins de la funció, fact s'inicialitza a 1. Aquesta variable emmagatzemarà el resultat factorial.
  4. El bucle for itera des de l'1 fins al nombre donat (num). En cada iteració, multiplica el valor actual de fet per l'índex de bucle i.
  5. Un cop finalitzat el bucle, la variable de fet conté el factorial calculat.
  6. L'script demana a l'usuari que introdueixi un número mitjançant la lectura.
  7. La funció calculate_factorial es crida amb el número proporcionat per l'usuari i el resultat s'emmagatzema a la variable factorial_result.
  8. Finalment, l'script mostra el resultat factorial calculat.
Factorial

Factorial

18) Com gestioneu senyals com Ctrl + C en un script de shell?

En un script d'intèrpret d'ordres, podeu gestionar senyals com Ctrl+C (també conegut com SIGINT) mitjançant l'ordre trap. Ctrl+C genera un senyal SIGINT quan l'usuari el prem per interrompre l'script o programa en execució. Mitjançant l'ordre trap, podeu especificar les accions que cal dur a terme quan es rep un senyal concret. A continuació s'explica com gestioneu senyals com Ctrl+C en un script de shell:

#!/bin/bash
netejar() {
echo Script interromput. S'està fent la neteja...
# Afegeix aquí les teves accions de neteja
sortida 1
}
# Configureu una trampa per trucar a la funció de neteja quan es rebi Ctrl+C (SIGINT).
neteja de paranys SIGINT
# La resta del vostre guió
echo Corrent...
dormir 10
eco Acabat.

El maneig dels senyals és important per fer que els scripts siguin robusts i assegurar-se que gestionen les interrupcions inesperades amb gràcia. Podeu personalitzar la funció de neteja perquè s'ajusti a les vostres necessitats específiques, com ara tancar fitxers, aturar processos o registrar informació abans que surti l'script.

Explicació:

  1. #!/bin/bash: aquesta línia shebang especifica l'intèrpret que s'utilitzarà per executar l'script.
  2. cleanup() { … }: Això defineix una funció anomenada cleanup. Dins d'aquesta funció, podeu incloure qualsevol acció que s'hagi de realitzar quan s'interromp l'script, com ara tancar fitxers, alliberar recursos o realitzar altres tasques de neteja.
  3. trap cleanup SIGINT: l'ordre trap s'utilitza per configurar un controlador de senyal. En aquest cas, especifica que quan es rep el senyal SIGINT (Ctrl+C), s'ha d'executar la funció de neteja.
  4. echo Running..., sleep 10, echo Finished.: Són només ordres d'exemple per simular l'execució d'un script.

446

19) Creeu un script que cerqui i elimineu les línies duplicades en un fitxer de text.

Aquí teniu el nostre guió de Linux en el qual eliminarem les línies duplicades d'un fitxer de text.

#!/bin/bash
fitxer_entrada=input.txt
fitxer_output=output.txt
ordena $fitxer_entrada | uniq> $fitxer_sortida
echo Les línies duplicades s'han eliminat correctament.

Explicació:

  1. L'script comença amb un shebang (#!/bin/bash), que indica que l'script s'ha d'interpretar mitjançant l'intèrpret d'ordres Bash.
  2. La variable input_file s'estableix amb el nom del fitxer d'entrada que conté línies duplicades (canvieu-ho pel nom del fitxer d'entrada real).
  3. La variable output_file s'estableix amb el nom del fitxer de sortida on s'eliminaran els duplicats (canvieu-ho pel nom del fitxer de sortida desitjat).
  4. L'script utilitza l'ordre sort per ordenar les línies del fitxer d'entrada. L'ordenació de les línies garanteix que les línies duplicades s'agrupin.
  5. A continuació, les línies ordenades es passen per l'ordre uniq, que elimina les línies duplicades consecutives. La sortida d'aquest procés es redirigeix ​​al fitxer de sortida.
  6. Després d'eliminar els duplicats, l'script imprimeix un missatge d'èxit.
eliminació de línies duplicades

eliminació de línies duplicades

Aquí, fem servir ` gat ` per mostrar el text dins del fitxer de text.

20) Escriu un script que generi una contrasenya aleatòria segura.

Aquí teniu el nostre script per generar una contrasenya aleatòria segura.

#!/bin/bash
# Funció per generar una contrasenya aleatòria
genera_contrasenya() {
tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
}
# Truqueu a la funció i emmagatzemeu la contrasenya generada
contrasenya=$(genera_contrasenya)
echo Contrasenya generada: $contrasenya

Nota: En conseqüència, l'usuari pot canviar la longitud de la contrasenya substituint el número '12'.

Explicació:

  1. L'script comença amb un shebang (#!/bin/bash), que indica que s'ha d'interpretar mitjançant l'intèrpret d'ordres Bash.
  2. La funció generate_password està definida per generar una contrasenya aleatòria. Així és com funciona:
    • tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
    • fold -w 12 divideix les dades aleatòries filtrades en línies d'amplada de 12 caràcters cadascuna.
    • head -n 1 selecciona la primera línia, donant-nos efectivament una seqüència aleatòria de caràcters de longitud 12.
  3. La variable de contrasenya s'assigna el resultat de cridar la funció generate_password.
  4. Finalment, la contrasenya generada es mostra amb echo.

448

21) Escriviu un script de shell que calculi la mida total de tots els fitxers d'un directori.

Aquí hi ha un script de shell per calcular la mida total de tots els fitxers d'un directori.

#!/bin/bash
directori=/camí/al/teu/directori
total_size=$(du -csh $directori | grep total | awk '{print $1}')
echo Mida total dels fitxers a $directory: $total_size

Explicació:

  1. L'script comença amb #!/bin/bash shebang, que indica que s'ha d'interpretar mitjançant l'intèrpret d'ordres Bash.
  2. La variable de directori s'estableix a la ruta del directori per al qual voleu calcular la mida total del fitxer. Substituïu /path/to/your/directory pel camí real.
  3. L'ordre du s'utilitza per estimar l'ús d'espai de fitxers. Les opcions utilitzades són:
    • -c: Produeix un gran total.
    • -s: Mostra només la mida total del directori especificat.
    • -h: mides d'impressió en un format llegible per persones (p. ex., KB, MB, GB).
  4. La sortida de du s'envia a grep total per filtrar la línia que conté la mida total.
  5. awk '{print $1}' s'utilitza per extreure el primer camp (mida total) de la línia.
  6. La mida total calculada s'emmagatzema a la variable total_size.
  7. Finalment, l'script mostra la mida total mitjançant echo.
Mida total dels fitxers

Mida total dels fitxers

Aquí hem utilitzat ` pwd ` per veure la ruta del directori actual.

22) Expliqueu la diferència entre les declaracions if i elif en els scripts d'intèrpret d'ordres.

Característica `si`Staiftement Declaració 'elif'.
Propòsit Expliqueu la diferència entre les declaracions if i elif en els scripts de shell. Proporciona condicions alternatives per comprovar quan la condició inicial si és falsa.
ús S'utilitza per a la condició inicial. S'utilitza després de la condició si inicial per comprovar condicions addicionals.
nombre de blocs Només pot tenir un bloc si. Pot tenir diversos blocs elif, però només un altre bloc (opcional).
Execució Executa el bloc de codi associat a la instrucció if si la condició és certa. Si la condició és falsa, s'executa el bloc else (si està present) (opcional). Comprova cada condició elif en ordre. Si una condició elif és certa, s'executa el bloc de codi corresponent i l'script surt de tot el bloc condicional. Si cap de les condicions elif és certa, s'executa el bloc else (si està present).
Estructures imbricades Es pot imbricar dins d'altres blocs if, elif o else. No es pot niuar dins d'un altre bloc elif, però es pot utilitzar dins d'un bloc if o else.

Entenem-ho amb un exemple.

#!/bin/bash
nombre=5
if [ $número -gt 10 ]; aleshores
echo $número és més gran que 10
altra cosa
echo $número no és més gran que 10
ser
eco ———
if [ $número -gt 10 ]; aleshores
echo $número és més gran que 10
elif [ $número -eq 10 ]; aleshores
echo $número és igual a 10
altra cosa
echo $número és inferior a 10
ser

Explicació:

En aquest exemple, el primer bloc if comprova si el nombre és més gran que 10. Si no, imprimeix un missatge que indica que el nombre no és superior a 10. El segon bloc amb declaracions elif verifica múltiples condicions seqüencialment fins que una d'elles és certa. En aquest cas, com que el valor del nombre és 5, la sortida serà:

if_elif diferència

if_elif diferència

23) Com s'utilitza un bucle while per executar ordres repetidament?

Un bucle while s'utilitza en els scripts d'intèrpret d'ordres per executar repetidament un conjunt d'ordres sempre que una condició especificada sigui certa. El bucle continua executant les ordres fins que la condició esdevé falsa.

Aquí teniu la sintaxi bàsica d'un bucle while:

mentre que [condició]; fer
# Ordres a executar
fet

Explicació:

  1. El bucle `while` comença amb la paraula clau `while` seguida d'una condició entre claudàtors `[ ]`.
  2. El cos del bucle, que conté les ordres que s'han d'executar, es troba dins de les paraules clau 'do' i 'fet'.
  3. El bucle comprova primer la condició. Si la condició és certa, s'executen les ordres dins del cos del bucle. Un cop s'executa el cos del bucle, la condició es torna a comprovar i el procés es repeteix fins que la condició esdevé falsa.

Exemple: Si volem imprimir números de l'1 al 5

#!/bin/bash
comptador=1
mentre que [ $comptador -le 5 ]; fer
echo Number: $comptador
comptador=$((comptador + 1))
fet

Explicació:

  • La variable del comptador s'estableix a 1.
  • El bucle while comprova si el valor del comptador és menor o igual a 5. Mentre aquesta condició sigui certa, el bucle continua executant-se.
  • Dins del bucle, el valor actual del comptador s'imprimeix mitjançant echo.
  • El comptador s'incrementa en 1 mitjançant l'expressió $((comptador + 1)).
bucle while

bucle while

24) Creeu un script d'intèrpret d'ordres que trobi i llista tots els fitxers buits d'un directori.

Script de Shell que podeu utilitzar per trobar i llistar tots els fitxers buits d'un directori mitjançant les ordres `find' i `stat`:

#!/bin/bash
directori=$1″
if [ -z $directori ]; aleshores
echo Ús: $0
sortida 1
ser

si [ ! -d $directori ]; aleshores
echo Error: '$directory' no és un directori vàlid.
sortida 1
ser
echo Fitxers buits al directori $:
cerca $directory -type f -empty

Explicació:

  1. ` #!/bin/bash `: Això s'anomena shebang i diu al sistema operatiu que utilitzi l'intèrpret d'ordres Bash per interpretar i executar l'script.
  2. ` directori=$1″ `: Aquesta línia assigna el primer argument de la línia d'ordres (indicat per $1) a la variable ` directori `.
  3. ` if [ -z $directori ]; aleshores `: Aquesta línia comença una instrucció if que verifica si el ` directori ` La variable està buida (-z prova una cadena buida).
  4. ` echo Ús: $0 `: Si el directori està buit, aquesta línia imprimeix un missatge d'ús, on ` $0 ` representa el nom del guió.
  5. ` sortida 1 `: aquesta línia surt de l'script amb un codi de sortida de ` 1 `, que indica un error.
  6. ` ser `: aquesta línia marca el final del ` si ` declaració.
  7. ` si [ ! -d $directori ]; aleshores `: S'inicia una altra instrucció if per comprovar si el directori proporcionat existeix (` -d ` proves per a un directori).
  8. ` echo Error: '$directory' no és un directori vàlid. `: Si el directori proporcionat no existeix, aquesta línia imprimeix un missatge d'error.
  9. ` sortida 1 `: surt de l'script amb un codi de sortida de ` 1 `.
  10. ` ser `: Marca el final del segon ` si' declaració.
  11. ` echo Fitxers buits al directori $: `: Si tot és vàlid fins ara, aquesta línia imprimeix un missatge que indica que l'script enumerarà els fitxers buits al directori especificat.
  12. ` cerca $directory -type f -empty `: aquesta línia utilitza el ` trobar ` ordre per cercar fitxers buits (` -buit `) de tipus fitxers normals (` -tipus f `) al directori especificat. A continuació, enumera aquests fitxers buits.
Trobar fitxers buits

Trobar fitxers buits

Nota : Hem de proporcionar un directori com a argument en executar l'script. Aquí hem utilitzat la ruta del directori actual home/jayeshkumar/

25) Quin és l'objectiu de l'ordre de lectura en els scripts d'intèrpret d'ordres?

L'ordre de lectura dels scripts d'intèrpret d'ordres permet que l'script us demani informació. És com quan un ordinador et fa una pregunta i espera la teva resposta. Això és útil per a scripts que necessiten que escriviu alguna cosa o per quan l'script necessita treballar amb informació dels fitxers. L'ordre de lectura ajuda a aturar l'script i esperar el que escriviu, i després pot utilitzar aquesta informació per fer més coses a l'script.

Sintaxi de l'ordre de lectura:

read variable_name>

Exemple : Si volem prendre el nom com a entrada de l'usuari per imprimir-lo.

#!/bin/bash
echo Introduïu el vostre nom:
llegir el nom
echo Hola, $name!

453

llegir nom

En resum, l'ordre read s'utilitza per capturar l'entrada de l'usuari o les dades dels fitxers dins dels scripts d'intèrpret d'ordres, fent que els scripts siguin més interactius i versàtils.

26) Escriu un script d'intèrpret d'ordres que converteixi tots els noms de fitxers d'un directori a minúscules.

Aquí hi ha un script d'intèrpret d'ordres que converteix tots els noms de fitxer d'un directori a minúscules.

#!/bin/bash
directori=$1″
if [ -z $directori ]; aleshores
echo Ús: $0
sortida 1
ser

si [ ! -d $directori ]; aleshores

echo Error: '$directory' no és un directori vàlid.
sortida 1
ser

cd $directori || sortida 1

per al fitxer en *; fer
if [ -f $fitxer ]; aleshores
nounom=$(eco $fitxer | tr ‘A-Z’ ‘a-z’)
[ $fitxer != $nom nou ] && mv $fitxer $nom nou
ser
fet

Explicació:

  1. #!/bin/bash : Aquest és el shebang, que especifica que l'script s'ha d'interpretar mitjançant l'intèrpret d'ordres Bash.
  2. directori=$1″ : Aquesta línia assigna el primer argument de la línia d'ordres al directori de variables.
  3. if [ -z $directori ]; aleshores : Aquesta línia comprova si la variable de directori està buida (no es proporciona cap argument en executar l'script).
  4. echo Ús: $0 : Si el directori està buit, aquesta línia imprimeix un missatge d'ús amb el nom de l'script ($0).
  5. sortida 1 : Aquesta línia surt de l'script amb un codi de sortida 1, que indica que s'ha produït un error.
  6. f i: Això marca el final de la primera declaració if.
  7. si [ ! -d $directori]; aleshores : Aquesta línia comprova si el directori especificat no existeix (-d prova per a un directori).
  8. echo Error: '$directory' no és un directori vàlid. : Si el directori especificat no existeix, aquesta línia imprimeix un missatge d'error.
  9. sortida 1 : surt de l'script amb un codi de sortida d'1.
  10. ser : Marca el final de la segona declaració if.
  11. cd $directori || sortida 1 : Canvia el directori de treball actual al directori especificat. Si el canvi de directori falla (p. ex., directori inexistent), l'script surt amb un codi d'error.
  12. per al fitxer en *; fer: jo per al fitxer en *; fer: inicia un bucle que itera sobre tots els elements del directori actual (* coincideix amb tots els noms de fitxer).
  13. if [ -f $fitxer ]; aleshores : Comprova si l'element d'iteració del bucle actual és un fitxer normal (-f prova per a un fitxer normal).
  14. nounom=$(eco $fitxer | tr ‘A-Z’ ‘a-z’) : Converteix el nom del fitxer actual ($fitxer) a minúscules mitjançant l'ordre tr i emmagatzema el resultat a la variable newname.
  15. [ $fitxer != $nom nou ] && mv $fitxer $nom nou : compara el nom del fitxer original amb el nou nom del fitxer en minúscules. Si són diferents, canvia el nom del fitxer mitjançant l'ordre mv.
  16. ser : Marca el final de la declaració si interna.
  17. fet : Marca el final del bucle.

454

Nota : Hem de proporcionar un directori com a argument en executar l'script. Aquí hem utilitzat la ruta del directori actual home/jayeshkumar/test

27) Com podeu utilitzar operacions aritmètiques dins d'un script de shell?

Les operacions aritmètiques es poden realitzar dins d'un script de shell utilitzant diversos mètodes integrats. L'intèrpret d'ordres proporciona mecanismes per a càlculs aritmètics simples mitjançant l'expansió aritmètica Com:

  1. Expansió aritmètica ($((…)))
  2. Utilitzant l'ordre expr
  3. Utilitzant el comandament let

Aquí teniu el nostre script Shell que explica els tres mètodes per a operacions aritmètiques.

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

#Expansió aritmètica ($((…)))

resultat=$((núm1 + núm2))
echo Suma: $resultat

#Usant l'ordre expr

suma=$(expr $núm1 + $núm2)
echo Suma: $sum

#Usant el comandament let

siguem suma = num1 + num2
echo Suma: $sum

Explicació:

  1. `#!/bin/bash` : Aquest és el shebang, que especifica que l'script s'ha d'interpretar mitjançant l'intèrpret d'ordres Bash.
  2. `núm1=10` i ` num2=5` : Aquestes línies assignen els valors 10 i 5 a les variables ` num1 ` i ` num2 `, respectivament.
  3. `#Expansió aritmètica ($((…)))` : Aquest és un comentari que indica l'inici de la secció que demostra l'expansió aritmètica.
  4. `resultat=$((núm1 + núm2))` : Aquesta línia utilitza l'expansió aritmètica per calcular la suma de ` núm1 ` i ` num2 ` i emmagatzema el resultat al fitxer ` resultat ` variable.
  5. `echo Sum: $resultat` : Aquesta línia imprimeix la suma calculada utilitzant el valor emmagatzemat al ` resultat ` variable.
  6. `#Usant l'ordre expr` : Aquest és un comentari que indica l'inici de la secció que demostra l'ús del ` expr ` ordre per a operacions aritmètiques.
  7. `suma=$(expr $núm1 + $núm2)` : Aquesta línia utilitza el ` expr ` ordre per calcular la suma de ` núm1 ` i ` num2 ` i emmagatzema el resultat al fitxer ` suma ` variable. Tingueu en compte que el ` expr L'ordre ` requereix espais al voltant dels operadors.
  8. `echo Sum: $sum` : Aquesta línia imprimeix la suma calculada utilitzant el valor emmagatzemat al ` suma ` variable.
  9. `#Usant l'ordre let` : Aquest és un comentari que indica l'inici de la secció que demostra l'ús del ` deixar ` ordre per a operacions aritmètiques.
  10. `deixar suma = num1 + num2″` : Aquesta línia utilitza el ` deixar ` ordre per calcular la suma de ` núm1 ` i ` num2 ` i assigna el resultat a ` suma ` variable. El ` deixar L'ordre ` no requereix espais al voltant dels operadors.
  11. `echo Sum: $sum` : Aquesta línia imprimeix la suma calculada utilitzant el valor emmagatzemat al ` suma ` variable.
aritmètica

aritmètica

28) Creeu un script que comprovi si es pot accedir a un host de xarxa.

Aquí hi ha un script d'intèrpret d'ordres senzill que utilitza l'ordre ping per comprovar si es pot accedir a un host de xarxa:

#!/bin/bash
amfitrió=$1″
if [ -z $amfitrió ]; aleshores
echo Ús: $0
sortida 1
ser
ping -c 4 $host

si [ $? -eq 0]; aleshores
echo $host és accessible.
altra cosa
echo $host no és accessible.
ser

Explicació:

  1. Pren un nom d'amfitrió o una adreça IP com a argument i comprova si es proporciona l'argument.
  2. Si no es proporciona cap argument, mostra un missatge d'ús i surt.
  3. Utilitza l'ordre ping amb l'opció -c 4 per enviar quatre sol·licituds d'eco ICMP a l'amfitrió especificat.
  4. Després d'executar l'ordre ping, comprova l'estat de sortida ($?). Si l'estat de sortida és 0, vol dir que l'amfitrió és accessible i l'script imprimeix un missatge d'èxit. En cas contrari, imprimeix un missatge d'error.

456

Nota : Hem de proporcionar un nom d'amfitrió com a argument quan executem l'script. Aquí hem utilitzat google.com

29) Escriu un script de Shell per trobar l'element més gran d'una matriu:

Aquí hi ha un script de shell per trobar l'element més gran d'una matriu.

#!/bin/bash
# Declarar una matriu
matriu=(3 56 24 89 67)

# Inicialitzeu una variable per emmagatzemar el valor màxim, començant pel primer element

max=${array[0]}

# Iterar per la matriu

per num a ${array[@]}; fer

# Compara cada element amb el màxim actual

si ((número> màxim)); aleshores
màxim=$núm
ser
fet

# Imprimeix el valor màxim

echo L'element màxim de la matriu és: $max

Explicació:

  1. ` #!/bin/bash `: La línia shebang especifica que l'script s'ha d'interpretar mitjançant l'intèrpret d'ordres Bash.
  2. ` matriu=(3 56 24 89 67) `: La matriu es declara i s'inicia amb valors.
  3. ` max=${array[0]} `: `max` s'inicialitza amb el primer element de la matriu.
  4. ` per num a ${array[@]}; fer `: Un bucle `for` s'utilitza per iterar pels elements de la matriu.
  5. ` si ((número> màxim)); aleshores `: Una instrucció `if` verifica si l'element actual `num` és més gran que el màxim actual `max`.
  6. ` max=$num`: Si`núm ` és més gran que `max`, `max` s'actualitza amb el valor de num.
  7. ` fet `: El bucle `for` està tancat.
  8. ` echo L'element màxim de la matriu és: $max `: Finalment, l'script imprimeix el valor màxim trobat a la matriu.
461

nombre més gran

30) Escriu un guió per calcular la suma dels elements d'una matriu.

#!/bin/bash

# Declarar una matriu

matriu=(1 65 22 19 94)

# Inicialitzar una variable per emmagatzemar la suma

suma=0

# Iterar per la matriu i afegir cada element a la suma

per num a ${array[@]}; fer
am=$((am + am))
fet

# Imprimeix la suma

echo La suma d'elements de la matriu és: $sum

Explicació:

` #!/bin/bash `: La línia shebang especifica que l'script s'ha d'interpretar mitjançant l'intèrpret d'ordres Bash.

` matriu=(1 65 22 19 94) `: La matriu es declara i s'inicia amb valors.

` suma=0 `: ` suma ` s'inicia a zero per contenir la suma d'elements.

` per num a ${array[@]}; fer `: A` per ` bucle s'utilitza per iterar a través dels elements de la matriu.

` am=$((am + am)) `: Dins del bucle, cada element ` en una ` s'afegeix al ` suma ` variable.

` fet `: El ` per ` el bucle està tancat.

`echo La suma d'elements de la matriu és: $sum`: Finalment, l'script imprimeix la suma de tots els elements de la matriu.

462

Suma d'elements

Més informació sobre els scripts de Shell

Conclusió

Tots els geeks sabem que el shell script és molt útil per augmentar la productivitat del treball i també per estalviar temps. Per tant, en aquest article hem tractat 30 exemples de scripts d'intèrpret d'ordres molt útils i la majoria d'estafadors . Esperem que aquesta guia completa sobre l'exemple de shell script us ajudi a entendre tot sobre els shell scripts.




sortida 1
ser

si [ ! -d $directori ]; aleshores
echo Error: '$directory' no és un directori vàlid.
sortida 1
ser
echo Fitxers buits al directori $:
cerca $directory -type f -empty

Explicació:

  1. ` #!/bin/bash `: Això s'anomena shebang i diu al sistema operatiu que utilitzi l'intèrpret d'ordres Bash per interpretar i executar l'script.
  2. ` directori=″ `: Aquesta línia assigna el primer argument de la línia d'ordres (indicat per ) a la variable ` directori `.
  3. ` if [ -z $directori ]; aleshores `: Aquesta línia comença una instrucció if que verifica si el ` directori ` La variable està buida (-z prova una cadena buida).
  4. ` echo Ús:

    Per a totes les distribucions de Linux, l'script shell és com una vareta màgica que automatitza el procés, estalvia temps als usuaris i augmenta la productivitat. Aquest tutorial de scripting us introduirà als 25 exemples de scripting.

    Però abans de passar al tema de shell scripting Per exemple, entenem l'script d'intèrpret d'ordres i els casos d'ús reals de l'script d'intèrpret d'ordres.

    Què és Shell Script?

    Bé, la closca és una CLI ( intèrpret de línia d'ordres ), que s'executa en una finestra de text on els usuaris poden gestionar i executar ordres de shell. D'altra banda, el procés d'escriure un conjunt d'ordres que s'executaran en un sistema Linux Un fitxer que inclou aquestes instruccions s'anomena script bash.

    Usos dels scripts de Shell

    A continuació es mostren alguns usos habituals de Shell Script:

    • Automatització de tasques – Es pot utilitzar per automatitzar tasques repetitives com ara còpies de seguretat habituals i tasques d'instal·lació de programari.
    • Personalització - Es pot utilitzar scripts d'intèrpret d'ordres per dissenyar el seu entorn de línia d'ordres i realitzar fàcilment la seva tasca segons les necessitats.
    • Gestió de fitxers - Els scripts d'intèrpret d'ordres també es poden utilitzar per gestionar i manipular fitxers i directoris, com ara moure, copiar, canviar el nom o suprimir fitxers.

    Exemples de script de Shell a Linux

    1) Què indica el shebang (#!) al començament d'un script de shell?

    El shebang (#!) al principi d'un script indica l'intèrpret que s'ha d'utilitzar per executar l'script. Indica al sistema quin shell o intèrpret ha d'interpretar les ordres de l'script.

    Per exemple: Suposem que tenim un script anomenat myscript.sh escrit a l'intèrpret d'ordres Bash:

    shebang

    shebang

    En aquest exemple:

    • El #!/bin/bash al començament de l'script indica que l'script s'ha d'interpretar mitjançant l'intèrpret d'ordres Bash.
    • Les ordres d'eco s'utilitzen per imprimir missatges al terminal.

    2) Com executeu un script de shell des de la línia d'ordres?

    Per executar un script de shell des de la línia d'ordres, hem de seguir aquests passos:

    • Assegureu-vos que el fitxer d'script tingui permisos executables mitjançant l' comanda chmod :
    chmod +x myscript.sh>
    • Executeu l'script utilitzant el seu nom de fitxer:
    ./myscript.sh>

    Aquí has ​​de substituir myscrtipt.sh amb el nom d'escriptura anterior.

    3) Escriviu un script d'intèrpret d'ordres que imprimeixi techcodeview.com al terminal.

    Creeu un nom d'script `myscript.sh` (estem utilitzant ` perquè ` editor, podeu triar qualsevol editor)

    vim myscript.sh>

    #!/bin/bash
    # Aquest script imprimeix techcodeview.com al terminal
    echo techcodeview.com

    Nom d'impressió

    Nom d'impressió

    Fem que el nostre script sigui executable utilitzant `chmod +x` i després executem amb `./myscipt.sh` i obtenim la nostra sortida desitjada techcodeview.com.

    4) Expliqueu el propòsit de l'ordre echo en els scripts de shell.

    El comanda d'eco s'utilitza per mostrar text o variables al terminal. S'utilitza habitualment per imprimir missatges, valors variables i generar resultats del programa.

    434

    comanda d'eco

    En aquest exemple hem executat `echo` directament al terminal, ja que funciona igual dins de l'script de shell.

    5) Com es pot assignar un valor a una variable en un script de shell?

    Les variables s'assignen valors mitjançant l'operador d'assignació =.

    Per exemple:

    #!/bin/bash
    # Assignació d'un valor a una variable
    nom=Jayesh
    edat = 21
    echo $nom $edat

    Explicació:

    • A la variable de nom se li assigna el valor Jayesh.
    • A la variable edat se li assigna el valor 21.
    • echo s'utilitza per imprimir i `$name` `$age` s'utilitza per cridar el valor emmagatzemat a les variables.

    435

    6) Escriu un script de shell que prengui el nom d'un usuari com a entrada i el saludi.

    Creeu un nom d'script `example.sh`.

    #!/bin/bash
    # Demaneu el seu nom a l'usuari
    echo Com et dius?
    llegir el nom
    # Saludeu l'usuari
    echo Hola, $name! Encantat de conèixer-te.

    Explicació:

    • #!/bin/bash: aquesta és la línia shebang. Indica al sistema que utilitzi l'intèrpret Bash per executar l'script.
    • # Demaneu el seu nom a l'usuari: Això és un comentari. Proporciona context sobre el codi proper. Els comentaris són ignorats per l'intèrpret.
    • echo Com et dius?: L'ordre echo s'utilitza per mostrar el text entre cometes dobles al terminal.
    • read name: l'ordre read espera que l'usuari introdueixi text i l'emmagatzema al nom de la variable.
    • echo Hola, $name! Encantat de conèixer-te.: Aquesta línia utilitza l'ordre echo per imprimir un missatge de salutació que inclou el valor de la variable de nom, que es va recopilar de l'entrada de l'usuari.

    436

    7) Com s'afegeixen comentaris a un script de shell?

    Comentaris en shell script s'utilitzen per proporcionar explicacions o context al codi. L'intèrpret els ignora i només estan pensats per als humans que llegeixen el guió. Podeu afegir comentaris amb el símbol #.

    #!/bin/bash
    # Aquest és un comentari que explica el propòsit del guió
    eco gfg

    8) Creeu un script d'intèrpret d'ordres que comprovi si existeix un fitxer al directori actual.

    Aquí hi ha un script que verifica si un fitxer anomenat example.txt existeix al directori actual:

    #!/bin/bash
    fitxer=exemple.txt
    # Comproveu si el fitxer existeix
    if [ -e $fitxer ]; aleshores
    echo El fitxer existeix: $fitxer
    altra cosa
    echo No s'ha trobat el fitxer: $fitxer
    ser

    Explicació:

    1. #!/bin/bash: Aquesta és la línia shebang que especifica l'intèrpret (/bin/bash) que s'utilitzarà per executar l'script.
    2. file=example.txt: aquesta línia defineix el fitxer variable i li assigna el valor example.txt. Podeu substituir-lo pel nom del fitxer que voleu comprovar.
    3. if [ -e $fitxer ]; then: Aquesta línia comença una sentència if. La condició [ -e $fitxer ] comprova si el fitxer especificat pel valor de la variable de fitxer existeix. El senyalador -e s'utilitza per comprovar l'existència de fitxers.
    4. echo El fitxer existeix: $fitxer: si la condició és certa (és a dir, el fitxer existeix), aquesta línia imprimeix un missatge que indica que el fitxer existeix, juntament amb el nom del fitxer.
    5. else: si la condició és falsa (és a dir, el fitxer no existeix), l'script executa el codi a la branca else.
    6. echo No s'ha trobat el fitxer: $fitxer: aquesta línia imprimeix un missatge d'error que indica que no s'ha trobat el fitxer especificat, juntament amb el nom del fitxer.
    7. fi: Aquesta línia marca el final de la instrucció if.
    Trobar fitxer

    Trobar fitxer

    9) Quina diferència hi ha entre cometes simples (‘) i cometes dobles () en els scripts de shell?

    Les cometes simples (‘) i les cometes dobles () s'utilitzen per incloure cadenes en els scripts d'intèrpret d'ordres, però tenen comportaments diferents:

    • Cometes simples: tot el que hi ha entre cometes simples es tracta com una cadena literal. Els noms de variables i la majoria de caràcters especials no s'amplien.
    • Cometes dobles: s'amplien les variables i certs caràcters especials dins de cometes dobles. Els continguts estan subjectes a substitució de variables i substitució d'ordres.

    #!/bin/bash

    abcd=Hola
    echo ‘$abcd’ # Sortida: $abcd
    echo $abcd # Sortida: Hola

    10) Com podeu utilitzar arguments de línia d'ordres en un script de shell?

    Arguments de la línia d'ordres són valors proporcionats a un script quan s'executa. S'hi pot accedir dins de l'script mitjançant variables especials com $1, $2, etc., on $1 representa el primer argument, $2 representa el segon argument, etc.

    Per exemple: Si el nostre nom d'script a `example.sh`

    #!/bin/bash

    echo Nom de l'script: $0
    echo Primer argument: $1
    echo Segon argument: $2

    Si executem l'script amb `.example.sh hello_1 hello_2`, sortirà:

    cli arguments

    cli arguments

    11) Com s'utilitza el bucle for per recórrer una llista de valors?

    Creeu un nom d'script `example.sh`.

    #!/bin/bash

    fruites=(data de cirera poma i plàtan)
    per a fruites a ${fruits[@]}; fer
    echo Fruita actual: $fruit
    fet

    Explicació:

    La línia `fruits=` crea una matriu anomenada fruites amb quatre elements: poma, plàtan, cirera i dàtil.

    • per a fruites a ${fruits[@]}; do: aquesta línia comença un bucle for. Aquí teniu el significat de cada part:
    • for fruit: declara una variable de bucle anomenada fruit. En cada iteració del bucle, fruit mantindrà el valor de l'element actual de la matriu de fruites.
    • ${fruits[@]}: aquesta és una expansió de matriu que pren tots els elements de la matriu de fruites. La sintaxi ${…} garanteix que cada element es tracti com un element separat.
    • do: aquesta paraula clau marca l'inici del cos del bucle.
    • echo Fruit actual: $fruit: Dins del bucle, aquesta línia utilitza l'ordre echo per mostrar el valor actual de la variable de bucle fruit. Imprimeix un missatge com ara Fruit actual: poma per a cada fruita de la matriu.
    • fet: aquesta paraula clau marca el final del cos del bucle. Indica a l'script que el bucle ha acabat.
    per bucle

    per bucle

    12) Escriu un script d'intèrpret d'ordres que calculi la suma dels nombres enters d'1 a N mitjançant un bucle.

    Creeu un nom d'script `example.sh`.

    #!/bin/bash

    echo Introduïu un número (N):
    llegir N
    suma=0
    per (( i=1; i<=$N; i++ )); fer
    suma=$((suma + i))
    fet
    echo La suma dels nombres enters d'1 a $N és: $sum

    Explicació:
    L'script comença demanant-vos que introduïu un número (N) mitjançant la lectura. Aquest número determinarà quantes vegades s'executa el bucle.

    1. La variable suma s'inicialitza a 0. Aquesta variable farà un seguiment de la suma dels nombres enters.
    2. El bucle for comença amb for (( i=1; i<=$N; i++ )). Aquesta estructura de bucle s'utilitza per repetir un conjunt d'accions un nombre determinat de vegades, en aquest cas, des d'1 fins al valor de N.
    3. Dins del bucle, passen aquestes coses:
      • i=1 estableix la variable de bucle i a 1 al començament de cada iteració.
      • La condició de bucle i<=$N comprova si i encara és menor o igual que el nombre donat N.
      • Si la condició és certa, el cos del bucle s'executa.
      • sum=$((suma + i)) calcula el nou valor de suma afegint-hi el valor actual de i. Això suma els nombres enters de 1 al valor i actual.
    4. Després de cada iteració, i++ augmenta el valor de i en 1.
    5. El bucle continua funcionant fins que la condició i<=$N esdevé falsa (quan i és més gran que N).
    6. Un cop finalitza el bucle, l'script mostra la suma dels nombres enters des de l'1 fins al número introduït N.

    439

    13) Creeu un script que cerqui una paraula específica en un fitxer i compta les seves ocurrències.

    Creeu un nom d'script `word_count.sh`

    #!/bin/bash

    echo Introduïu la paraula per cercar:
    llegir paraula_destinació
    echo Introduïu el nom del fitxer:
    llegir el nom del fitxer
    count=$(grep -o -w $paraula_objectiu $nomfitxer | wc -l)
    echo La paraula '$target_word' apareix $count times a '$filename'.

    Explicació:

    • echo Introduïu la paraula a cercar:: Aquesta línia mostra un missatge demanant a l'usuari que introdueixi una paraula que vol cercar en un fitxer.
    • read target_word: Aquesta línia llegeix l'entrada proporcionada per l'usuari i l'emmagatzema en una variable anomenada target_word.
    • echo Introduïu el nom del fitxer:: Aquesta línia mostra un missatge demanant a l'usuari que introdueixi el nom del fitxer en què vol cercar.
    • llegir nom de fitxer: aquesta línia llegeix l'entrada proporcionada per l'usuari i l'emmagatzema en una variable anomenada nom de fitxer.
    • count=$(grep -o -w $target_word $filename | wc -l): Aquesta línia fa el treball principal de l'script. Anem a desglossar-ho més:
      • grep -o -w $target_word $filename: aquesta part de l'ordre cerca les ocurrències de la paraula_destinació al nom de fitxer especificat. Les opcions -o i -w asseguren que només es compten les coincidències de paraules senceres.
      • |: Aquesta és una canalització, que pren la sortida de l'ordre anterior i l'envia com a entrada a l'ordre següent.
      • wc -l: aquesta part de l'ordre utilitza l'ordre wc per comptar el nombre de línies de l'entrada. L'opció -l compta específicament les línies.
      • L'ordre sencera calcula el recompte d'ocurrències de la paraula_destinació al fitxer i assigna aquest recompte a la variable count

    441

    14) Expliqueu les diferències entre la sortida estàndard (stdout) i l'error estàndard (stderr).

    La diferència principal entre la sortida estàndard (stdout) i l'error estàndard (stderr) és la següent:

    • Sortida estàndard (stdout): Aquest és el flux de sortida predeterminat on va la sortida normal d'una ordre. Es mostra al terminal de manera predeterminada. Podeu redirigir-lo a un fitxer mitjançant>.
    • Error estàndard (stderr): Aquest és el flux de sortida dels missatges d'error i advertències. També es mostra al terminal de manera predeterminada. Podeu redirigir-lo a un fitxer mitjançant 2>.

    15) Expliqueu el concepte de sentències condicionals en shell scripting.

    Declaracions condicionals en scripts de shell ens permeten prendre decisions i controlar el flux del nostre guió en funció de determinades condicions. Permeten que el nostre script executi diferents conjunts d'ordres depenent de si una condició concreta és certa o falsa. Les sentències condicionals primàries en els scripts d'intèrpret d'ordres són la sentència if, la sentència elif (opcional) i la sentència else (opcional).

    A continuació, es mostra l'estructura bàsica d'una instrucció condicional en scripts de shell:

    si [condició]; aleshores
    # Ordres per executar si la condició és certa
    elif [una altra_condició]; aleshores
    # Ordres per executar si una altra_condició és certa (opcional)
    altra cosa
    # Ordres per executar si cap de les condicions és certa (opcional)
    ser

    Explicació:

    • [condició] = Ordre que avalua la condició i retorna un estat de sortida veritable (0) o fals (no zero).
    • then = És una paraula clau que indica que les ordres que la segueixen s'executaran si la condició s'avalua com a vertadera.
    • elif = (abreviatura de else if) És una secció que ens permet especificar condicions addicionals per comprovar.
    • else = és una secció que conté ordres que s'executaran si cap de les condicions és certa.
    • fi = És una paraula clau que marca el final del bloc condicional.

    16) Com llegiu les línies d'un fitxer dins d'un script de shell?

    A llegir línies des d'un fitxer dins d'un script d'intèrpret d'ordres, podem utilitzar diversos mètodes, però un enfocament comú és utilitzar un bucle while en combinació amb l'ordre read. Així és com ho podem fer:

    #!/bin/bash
    fitxer=/home/jayeshkumar/jayesh.txt
    # Comproveu si el fitxer existeix
    if [ -e $fitxer ]; aleshores
    mentre que IFS= llegeix la línia -r; fer
    echo Line read: $line
    # Afegiu aquí la vostra lògica de processament
    fet <$fitxer
    altra cosa
    echo No s'ha trobat el fitxer: $fitxer
    ser

    Explicació:

    1. #!/bin/bash: Aquesta és la línia shebang que especifica l'intèrpret (/bin/bash) que s'utilitzarà per executar l'script.
    2. file=/home/jayeshkumar/jayesh.txt: aquesta línia defineix el fitxer variable i assigna el camí complet al fitxer jayesh.txt al directori /home/jayeshkumar. Canvieu aquest camí perquè coincideixi amb el camí real del fitxer que voleu llegir.
    3. if [ -e $fitxer ]; then: Aquesta línia comença una sentència if. Comprova si el fitxer especificat per la variable $file existeix. El senyalador -e comprova l'existència del fitxer.
    4. mentre que IFS= llegeix la línia -r; do: aquesta línia inicia un bucle while que llegeix les línies del fitxer.
      • IFS=: l'IFS (Internal Field Separator) s'estableix en un valor buit per preservar els espais inicials i finals.
      • read -r line: llegeix la línia actual del fitxer i l'emmagatzema a la línia variable.
    5. echo Line read: $line: Aquesta línia imprimeix el contingut de la línia que s'ha llegit del fitxer. La variable $line conté el contingut de la línia actual.
    6. # Afegiu la vostra lògica de processament aquí: aquest és un comentari de marcador de posició on podeu afegir la vostra pròpia lògica per processar cada línia. Per exemple, podeu analitzar la línia, extreure informació o realitzar accions específiques basades en el contingut.
    7. done <$file: Això marca el final del bucle while. El < $file redirigeix ​​el contingut del fitxer per ser llegit pel bucle.
    8. else: si el fitxer no existeix (la condició de la instrucció if és falsa), l'script executa el codi a la branca else.
    9. echo No s'ha trobat el fitxer: $fitxer: aquesta línia imprimeix un missatge d'error que indica que no s'ha trobat el fitxer especificat.
    10. fi: Aquesta línia marca el final de la instrucció if.
    fitxer de lectura

    fitxer de lectura

    Aquí hem utilitzat ` pwd ` comanda per obtenir la ruta del directori actual.

    17) Escriu una funció en un script de shell que calculi el factorial d'un nombre donat.

    Aquí teniu el guió quecalcula el factoriald'un nombre donat.

    #!/bin/bash
    # Definiu una funció per calcular factorial
    calcula_factorial() {
    num=$1
    fet = 1
    per ((i=1; i<=núm; i++)); fer
    fet=$((fet * i))
    fet
    echo $fet
    }
    # Demaneu a l'usuari que introdueixi un número
    echo Introduïu un número:
    llegir input_num
    # Truqueu a la funció calculate_factorial amb el número d'entrada
    factor_result=$(calcular_factorial $núm_entrada)
    # Mostra el resultat factorial
    echo El factor de $núm_entrada és: $resultat_factorial

    Explicació:

    1. L'script comença amb la línia shebang #!/bin/bash per especificar l'intèrpret.
    2. calculate_factorial() es defineix com una funció. Es necessita un argument, num, que és el nombre pel qual s'ha de calcular el factorial.
    3. Dins de la funció, fact s'inicialitza a 1. Aquesta variable emmagatzemarà el resultat factorial.
    4. El bucle for itera des de l'1 fins al nombre donat (num). En cada iteració, multiplica el valor actual de fet per l'índex de bucle i.
    5. Un cop finalitzat el bucle, la variable de fet conté el factorial calculat.
    6. L'script demana a l'usuari que introdueixi un número mitjançant la lectura.
    7. La funció calculate_factorial es crida amb el número proporcionat per l'usuari i el resultat s'emmagatzema a la variable factorial_result.
    8. Finalment, l'script mostra el resultat factorial calculat.
    Factorial

    Factorial

    18) Com gestioneu senyals com Ctrl + C en un script de shell?

    En un script d'intèrpret d'ordres, podeu gestionar senyals com Ctrl+C (també conegut com SIGINT) mitjançant l'ordre trap. Ctrl+C genera un senyal SIGINT quan l'usuari el prem per interrompre l'script o programa en execució. Mitjançant l'ordre trap, podeu especificar les accions que cal dur a terme quan es rep un senyal concret. A continuació s'explica com gestioneu senyals com Ctrl+C en un script de shell:

    #!/bin/bash
    netejar() {
    echo Script interromput. S'està fent la neteja...
    # Afegeix aquí les teves accions de neteja
    sortida 1
    }
    # Configureu una trampa per trucar a la funció de neteja quan es rebi Ctrl+C (SIGINT).
    neteja de paranys SIGINT
    # La resta del vostre guió
    echo Corrent...
    dormir 10
    eco Acabat.

    El maneig dels senyals és important per fer que els scripts siguin robusts i assegurar-se que gestionen les interrupcions inesperades amb gràcia. Podeu personalitzar la funció de neteja perquè s'ajusti a les vostres necessitats específiques, com ara tancar fitxers, aturar processos o registrar informació abans que surti l'script.

    Explicació:

    1. #!/bin/bash: aquesta línia shebang especifica l'intèrpret que s'utilitzarà per executar l'script.
    2. cleanup() { … }: Això defineix una funció anomenada cleanup. Dins d'aquesta funció, podeu incloure qualsevol acció que s'hagi de realitzar quan s'interromp l'script, com ara tancar fitxers, alliberar recursos o realitzar altres tasques de neteja.
    3. trap cleanup SIGINT: l'ordre trap s'utilitza per configurar un controlador de senyal. En aquest cas, especifica que quan es rep el senyal SIGINT (Ctrl+C), s'ha d'executar la funció de neteja.
    4. echo Running..., sleep 10, echo Finished.: Són només ordres d'exemple per simular l'execució d'un script.

    446

    19) Creeu un script que cerqui i elimineu les línies duplicades en un fitxer de text.

    Aquí teniu el nostre guió de Linux en el qual eliminarem les línies duplicades d'un fitxer de text.

    #!/bin/bash
    fitxer_entrada=input.txt
    fitxer_output=output.txt
    ordena $fitxer_entrada | uniq> $fitxer_sortida
    echo Les línies duplicades s'han eliminat correctament.

    Explicació:

    1. L'script comença amb un shebang (#!/bin/bash), que indica que l'script s'ha d'interpretar mitjançant l'intèrpret d'ordres Bash.
    2. La variable input_file s'estableix amb el nom del fitxer d'entrada que conté línies duplicades (canvieu-ho pel nom del fitxer d'entrada real).
    3. La variable output_file s'estableix amb el nom del fitxer de sortida on s'eliminaran els duplicats (canvieu-ho pel nom del fitxer de sortida desitjat).
    4. L'script utilitza l'ordre sort per ordenar les línies del fitxer d'entrada. L'ordenació de les línies garanteix que les línies duplicades s'agrupin.
    5. A continuació, les línies ordenades es passen per l'ordre uniq, que elimina les línies duplicades consecutives. La sortida d'aquest procés es redirigeix ​​al fitxer de sortida.
    6. Després d'eliminar els duplicats, l'script imprimeix un missatge d'èxit.
    eliminació de línies duplicades

    eliminació de línies duplicades

    Aquí, fem servir ` gat ` per mostrar el text dins del fitxer de text.

    20) Escriu un script que generi una contrasenya aleatòria segura.

    Aquí teniu el nostre script per generar una contrasenya aleatòria segura.

    #!/bin/bash
    # Funció per generar una contrasenya aleatòria
    genera_contrasenya() {
    tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
    }
    # Truqueu a la funció i emmagatzemeu la contrasenya generada
    contrasenya=$(genera_contrasenya)
    echo Contrasenya generada: $contrasenya

    Nota: En conseqüència, l'usuari pot canviar la longitud de la contrasenya substituint el número '12'.

    Explicació:

    1. L'script comença amb un shebang (#!/bin/bash), que indica que s'ha d'interpretar mitjançant l'intèrpret d'ordres Bash.
    2. La funció generate_password està definida per generar una contrasenya aleatòria. Així és com funciona:
      • tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
      • fold -w 12 divideix les dades aleatòries filtrades en línies d'amplada de 12 caràcters cadascuna.
      • head -n 1 selecciona la primera línia, donant-nos efectivament una seqüència aleatòria de caràcters de longitud 12.
    3. La variable de contrasenya s'assigna el resultat de cridar la funció generate_password.
    4. Finalment, la contrasenya generada es mostra amb echo.

    448

    21) Escriviu un script de shell que calculi la mida total de tots els fitxers d'un directori.

    Aquí hi ha un script de shell per calcular la mida total de tots els fitxers d'un directori.

    #!/bin/bash
    directori=/camí/al/teu/directori
    total_size=$(du -csh $directori | grep total | awk '{print $1}')
    echo Mida total dels fitxers a $directory: $total_size

    Explicació:

    1. L'script comença amb #!/bin/bash shebang, que indica que s'ha d'interpretar mitjançant l'intèrpret d'ordres Bash.
    2. La variable de directori s'estableix a la ruta del directori per al qual voleu calcular la mida total del fitxer. Substituïu /path/to/your/directory pel camí real.
    3. L'ordre du s'utilitza per estimar l'ús d'espai de fitxers. Les opcions utilitzades són:
      • -c: Produeix un gran total.
      • -s: Mostra només la mida total del directori especificat.
      • -h: mides d'impressió en un format llegible per persones (p. ex., KB, MB, GB).
    4. La sortida de du s'envia a grep total per filtrar la línia que conté la mida total.
    5. awk '{print $1}' s'utilitza per extreure el primer camp (mida total) de la línia.
    6. La mida total calculada s'emmagatzema a la variable total_size.
    7. Finalment, l'script mostra la mida total mitjançant echo.
    Mida total dels fitxers

    Mida total dels fitxers

    Aquí hem utilitzat ` pwd ` per veure la ruta del directori actual.

    22) Expliqueu la diferència entre les declaracions if i elif en els scripts d'intèrpret d'ordres.

    Característica `si`Staiftement Declaració 'elif'.
    Propòsit Expliqueu la diferència entre les declaracions if i elif en els scripts de shell. Proporciona condicions alternatives per comprovar quan la condició inicial si és falsa.
    ús S'utilitza per a la condició inicial. S'utilitza després de la condició si inicial per comprovar condicions addicionals.
    nombre de blocs Només pot tenir un bloc si. Pot tenir diversos blocs elif, però només un altre bloc (opcional).
    Execució Executa el bloc de codi associat a la instrucció if si la condició és certa. Si la condició és falsa, s'executa el bloc else (si està present) (opcional). Comprova cada condició elif en ordre. Si una condició elif és certa, s'executa el bloc de codi corresponent i l'script surt de tot el bloc condicional. Si cap de les condicions elif és certa, s'executa el bloc else (si està present).
    Estructures imbricades Es pot imbricar dins d'altres blocs if, elif o else. No es pot niuar dins d'un altre bloc elif, però es pot utilitzar dins d'un bloc if o else.

    Entenem-ho amb un exemple.

    #!/bin/bash
    nombre=5
    if [ $número -gt 10 ]; aleshores
    echo $número és més gran que 10
    altra cosa
    echo $número no és més gran que 10
    ser
    eco ———
    if [ $número -gt 10 ]; aleshores
    echo $número és més gran que 10
    elif [ $número -eq 10 ]; aleshores
    echo $número és igual a 10
    altra cosa
    echo $número és inferior a 10
    ser

    Explicació:

    En aquest exemple, el primer bloc if comprova si el nombre és més gran que 10. Si no, imprimeix un missatge que indica que el nombre no és superior a 10. El segon bloc amb declaracions elif verifica múltiples condicions seqüencialment fins que una d'elles és certa. En aquest cas, com que el valor del nombre és 5, la sortida serà:

    if_elif diferència

    if_elif diferència

    23) Com s'utilitza un bucle while per executar ordres repetidament?

    Un bucle while s'utilitza en els scripts d'intèrpret d'ordres per executar repetidament un conjunt d'ordres sempre que una condició especificada sigui certa. El bucle continua executant les ordres fins que la condició esdevé falsa.

    Aquí teniu la sintaxi bàsica d'un bucle while:

    mentre que [condició]; fer
    # Ordres a executar
    fet

    Explicació:

    1. El bucle `while` comença amb la paraula clau `while` seguida d'una condició entre claudàtors `[ ]`.
    2. El cos del bucle, que conté les ordres que s'han d'executar, es troba dins de les paraules clau 'do' i 'fet'.
    3. El bucle comprova primer la condició. Si la condició és certa, s'executen les ordres dins del cos del bucle. Un cop s'executa el cos del bucle, la condició es torna a comprovar i el procés es repeteix fins que la condició esdevé falsa.

    Exemple: Si volem imprimir números de l'1 al 5

    #!/bin/bash
    comptador=1
    mentre que [ $comptador -le 5 ]; fer
    echo Number: $comptador
    comptador=$((comptador + 1))
    fet

    Explicació:

    • La variable del comptador s'estableix a 1.
    • El bucle while comprova si el valor del comptador és menor o igual a 5. Mentre aquesta condició sigui certa, el bucle continua executant-se.
    • Dins del bucle, el valor actual del comptador s'imprimeix mitjançant echo.
    • El comptador s'incrementa en 1 mitjançant l'expressió $((comptador + 1)).
    bucle while

    bucle while

    24) Creeu un script d'intèrpret d'ordres que trobi i llista tots els fitxers buits d'un directori.

    Script de Shell que podeu utilitzar per trobar i llistar tots els fitxers buits d'un directori mitjançant les ordres `find' i `stat`:

    #!/bin/bash
    directori=$1″
    if [ -z $directori ]; aleshores
    echo Ús: $0
    sortida 1
    ser

    si [ ! -d $directori ]; aleshores
    echo Error: '$directory' no és un directori vàlid.
    sortida 1
    ser
    echo Fitxers buits al directori $:
    cerca $directory -type f -empty

    Explicació:

    1. ` #!/bin/bash `: Això s'anomena shebang i diu al sistema operatiu que utilitzi l'intèrpret d'ordres Bash per interpretar i executar l'script.
    2. ` directori=$1″ `: Aquesta línia assigna el primer argument de la línia d'ordres (indicat per $1) a la variable ` directori `.
    3. ` if [ -z $directori ]; aleshores `: Aquesta línia comença una instrucció if que verifica si el ` directori ` La variable està buida (-z prova una cadena buida).
    4. ` echo Ús: $0 `: Si el directori està buit, aquesta línia imprimeix un missatge d'ús, on ` $0 ` representa el nom del guió.
    5. ` sortida 1 `: aquesta línia surt de l'script amb un codi de sortida de ` 1 `, que indica un error.
    6. ` ser `: aquesta línia marca el final del ` si ` declaració.
    7. ` si [ ! -d $directori ]; aleshores `: S'inicia una altra instrucció if per comprovar si el directori proporcionat existeix (` -d ` proves per a un directori).
    8. ` echo Error: '$directory' no és un directori vàlid. `: Si el directori proporcionat no existeix, aquesta línia imprimeix un missatge d'error.
    9. ` sortida 1 `: surt de l'script amb un codi de sortida de ` 1 `.
    10. ` ser `: Marca el final del segon ` si' declaració.
    11. ` echo Fitxers buits al directori $: `: Si tot és vàlid fins ara, aquesta línia imprimeix un missatge que indica que l'script enumerarà els fitxers buits al directori especificat.
    12. ` cerca $directory -type f -empty `: aquesta línia utilitza el ` trobar ` ordre per cercar fitxers buits (` -buit `) de tipus fitxers normals (` -tipus f `) al directori especificat. A continuació, enumera aquests fitxers buits.
    Trobar fitxers buits

    Trobar fitxers buits

    Nota : Hem de proporcionar un directori com a argument en executar l'script. Aquí hem utilitzat la ruta del directori actual home/jayeshkumar/

    25) Quin és l'objectiu de l'ordre de lectura en els scripts d'intèrpret d'ordres?

    L'ordre de lectura dels scripts d'intèrpret d'ordres permet que l'script us demani informació. És com quan un ordinador et fa una pregunta i espera la teva resposta. Això és útil per a scripts que necessiten que escriviu alguna cosa o per quan l'script necessita treballar amb informació dels fitxers. L'ordre de lectura ajuda a aturar l'script i esperar el que escriviu, i després pot utilitzar aquesta informació per fer més coses a l'script.

    Sintaxi de l'ordre de lectura:

    read variable_name>

    Exemple : Si volem prendre el nom com a entrada de l'usuari per imprimir-lo.

    #!/bin/bash
    echo Introduïu el vostre nom:
    llegir el nom
    echo Hola, $name!

    453

    llegir nom

    En resum, l'ordre read s'utilitza per capturar l'entrada de l'usuari o les dades dels fitxers dins dels scripts d'intèrpret d'ordres, fent que els scripts siguin més interactius i versàtils.

    26) Escriu un script d'intèrpret d'ordres que converteixi tots els noms de fitxers d'un directori a minúscules.

    Aquí hi ha un script d'intèrpret d'ordres que converteix tots els noms de fitxer d'un directori a minúscules.

    #!/bin/bash
    directori=$1″
    if [ -z $directori ]; aleshores
    echo Ús: $0
    sortida 1
    ser

    si [ ! -d $directori ]; aleshores

    echo Error: '$directory' no és un directori vàlid.
    sortida 1
    ser

    cd $directori || sortida 1

    per al fitxer en *; fer
    if [ -f $fitxer ]; aleshores
    nounom=$(eco $fitxer | tr ‘A-Z’ ‘a-z’)
    [ $fitxer != $nom nou ] && mv $fitxer $nom nou
    ser
    fet

    Explicació:

    1. #!/bin/bash : Aquest és el shebang, que especifica que l'script s'ha d'interpretar mitjançant l'intèrpret d'ordres Bash.
    2. directori=$1″ : Aquesta línia assigna el primer argument de la línia d'ordres al directori de variables.
    3. if [ -z $directori ]; aleshores : Aquesta línia comprova si la variable de directori està buida (no es proporciona cap argument en executar l'script).
    4. echo Ús: $0 : Si el directori està buit, aquesta línia imprimeix un missatge d'ús amb el nom de l'script ($0).
    5. sortida 1 : Aquesta línia surt de l'script amb un codi de sortida 1, que indica que s'ha produït un error.
    6. f i: Això marca el final de la primera declaració if.
    7. si [ ! -d $directori]; aleshores : Aquesta línia comprova si el directori especificat no existeix (-d prova per a un directori).
    8. echo Error: '$directory' no és un directori vàlid. : Si el directori especificat no existeix, aquesta línia imprimeix un missatge d'error.
    9. sortida 1 : surt de l'script amb un codi de sortida d'1.
    10. ser : Marca el final de la segona declaració if.
    11. cd $directori || sortida 1 : Canvia el directori de treball actual al directori especificat. Si el canvi de directori falla (p. ex., directori inexistent), l'script surt amb un codi d'error.
    12. per al fitxer en *; fer: jo per al fitxer en *; fer: inicia un bucle que itera sobre tots els elements del directori actual (* coincideix amb tots els noms de fitxer).
    13. if [ -f $fitxer ]; aleshores : Comprova si l'element d'iteració del bucle actual és un fitxer normal (-f prova per a un fitxer normal).
    14. nounom=$(eco $fitxer | tr ‘A-Z’ ‘a-z’) : Converteix el nom del fitxer actual ($fitxer) a minúscules mitjançant l'ordre tr i emmagatzema el resultat a la variable newname.
    15. [ $fitxer != $nom nou ] && mv $fitxer $nom nou : compara el nom del fitxer original amb el nou nom del fitxer en minúscules. Si són diferents, canvia el nom del fitxer mitjançant l'ordre mv.
    16. ser : Marca el final de la declaració si interna.
    17. fet : Marca el final del bucle.

    454

    Nota : Hem de proporcionar un directori com a argument en executar l'script. Aquí hem utilitzat la ruta del directori actual home/jayeshkumar/test

    27) Com podeu utilitzar operacions aritmètiques dins d'un script de shell?

    Les operacions aritmètiques es poden realitzar dins d'un script de shell utilitzant diversos mètodes integrats. L'intèrpret d'ordres proporciona mecanismes per a càlculs aritmètics simples mitjançant l'expansió aritmètica Com:

    1. Expansió aritmètica ($((…)))
    2. Utilitzant l'ordre expr
    3. Utilitzant el comandament let

    Aquí teniu el nostre script Shell que explica els tres mètodes per a operacions aritmètiques.

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

    #Expansió aritmètica ($((…)))

    resultat=$((núm1 + núm2))
    echo Suma: $resultat

    #Usant l'ordre expr

    suma=$(expr $núm1 + $núm2)
    echo Suma: $sum

    #Usant el comandament let

    siguem suma = num1 + num2
    echo Suma: $sum

    Explicació:

    1. `#!/bin/bash` : Aquest és el shebang, que especifica que l'script s'ha d'interpretar mitjançant l'intèrpret d'ordres Bash.
    2. `núm1=10` i ` num2=5` : Aquestes línies assignen els valors 10 i 5 a les variables ` num1 ` i ` num2 `, respectivament.
    3. `#Expansió aritmètica ($((…)))` : Aquest és un comentari que indica l'inici de la secció que demostra l'expansió aritmètica.
    4. `resultat=$((núm1 + núm2))` : Aquesta línia utilitza l'expansió aritmètica per calcular la suma de ` núm1 ` i ` num2 ` i emmagatzema el resultat al fitxer ` resultat ` variable.
    5. `echo Sum: $resultat` : Aquesta línia imprimeix la suma calculada utilitzant el valor emmagatzemat al ` resultat ` variable.
    6. `#Usant l'ordre expr` : Aquest és un comentari que indica l'inici de la secció que demostra l'ús del ` expr ` ordre per a operacions aritmètiques.
    7. `suma=$(expr $núm1 + $núm2)` : Aquesta línia utilitza el ` expr ` ordre per calcular la suma de ` núm1 ` i ` num2 ` i emmagatzema el resultat al fitxer ` suma ` variable. Tingueu en compte que el ` expr L'ordre ` requereix espais al voltant dels operadors.
    8. `echo Sum: $sum` : Aquesta línia imprimeix la suma calculada utilitzant el valor emmagatzemat al ` suma ` variable.
    9. `#Usant l'ordre let` : Aquest és un comentari que indica l'inici de la secció que demostra l'ús del ` deixar ` ordre per a operacions aritmètiques.
    10. `deixar suma = num1 + num2″` : Aquesta línia utilitza el ` deixar ` ordre per calcular la suma de ` núm1 ` i ` num2 ` i assigna el resultat a ` suma ` variable. El ` deixar L'ordre ` no requereix espais al voltant dels operadors.
    11. `echo Sum: $sum` : Aquesta línia imprimeix la suma calculada utilitzant el valor emmagatzemat al ` suma ` variable.
    aritmètica

    aritmètica

    28) Creeu un script que comprovi si es pot accedir a un host de xarxa.

    Aquí hi ha un script d'intèrpret d'ordres senzill que utilitza l'ordre ping per comprovar si es pot accedir a un host de xarxa:

    #!/bin/bash
    amfitrió=$1″
    if [ -z $amfitrió ]; aleshores
    echo Ús: $0
    sortida 1
    ser
    ping -c 4 $host

    si [ $? -eq 0]; aleshores
    echo $host és accessible.
    altra cosa
    echo $host no és accessible.
    ser

    Explicació:

    1. Pren un nom d'amfitrió o una adreça IP com a argument i comprova si es proporciona l'argument.
    2. Si no es proporciona cap argument, mostra un missatge d'ús i surt.
    3. Utilitza l'ordre ping amb l'opció -c 4 per enviar quatre sol·licituds d'eco ICMP a l'amfitrió especificat.
    4. Després d'executar l'ordre ping, comprova l'estat de sortida ($?). Si l'estat de sortida és 0, vol dir que l'amfitrió és accessible i l'script imprimeix un missatge d'èxit. En cas contrari, imprimeix un missatge d'error.

    456

    Nota : Hem de proporcionar un nom d'amfitrió com a argument quan executem l'script. Aquí hem utilitzat google.com

    29) Escriu un script de Shell per trobar l'element més gran d'una matriu:

    Aquí hi ha un script de shell per trobar l'element més gran d'una matriu.

    #!/bin/bash
    # Declarar una matriu
    matriu=(3 56 24 89 67)

    # Inicialitzeu una variable per emmagatzemar el valor màxim, començant pel primer element

    max=${array[0]}

    # Iterar per la matriu

    per num a ${array[@]}; fer

    # Compara cada element amb el màxim actual

    si ((número> màxim)); aleshores
    màxim=$núm
    ser
    fet

    # Imprimeix el valor màxim

    echo L'element màxim de la matriu és: $max

    Explicació:

    1. ` #!/bin/bash `: La línia shebang especifica que l'script s'ha d'interpretar mitjançant l'intèrpret d'ordres Bash.
    2. ` matriu=(3 56 24 89 67) `: La matriu es declara i s'inicia amb valors.
    3. ` max=${array[0]} `: `max` s'inicialitza amb el primer element de la matriu.
    4. ` per num a ${array[@]}; fer `: Un bucle `for` s'utilitza per iterar pels elements de la matriu.
    5. ` si ((número> màxim)); aleshores `: Una instrucció `if` verifica si l'element actual `num` és més gran que el màxim actual `max`.
    6. ` max=$num`: Si`núm ` és més gran que `max`, `max` s'actualitza amb el valor de num.
    7. ` fet `: El bucle `for` està tancat.
    8. ` echo L'element màxim de la matriu és: $max `: Finalment, l'script imprimeix el valor màxim trobat a la matriu.
    461

    nombre més gran

    30) Escriu un guió per calcular la suma dels elements d'una matriu.

    #!/bin/bash

    # Declarar una matriu

    matriu=(1 65 22 19 94)

    # Inicialitzar una variable per emmagatzemar la suma

    suma=0

    # Iterar per la matriu i afegir cada element a la suma

    per num a ${array[@]}; fer
    am=$((am + am))
    fet

    # Imprimeix la suma

    echo La suma d'elements de la matriu és: $sum

    Explicació:

    ` #!/bin/bash `: La línia shebang especifica que l'script s'ha d'interpretar mitjançant l'intèrpret d'ordres Bash.

    ` matriu=(1 65 22 19 94) `: La matriu es declara i s'inicia amb valors.

    ` suma=0 `: ` suma ` s'inicia a zero per contenir la suma d'elements.

    ` per num a ${array[@]}; fer `: A` per ` bucle s'utilitza per iterar a través dels elements de la matriu.

    ` am=$((am + am)) `: Dins del bucle, cada element ` en una ` s'afegeix al ` suma ` variable.

    ` fet `: El ` per ` el bucle està tancat.

    `echo La suma d'elements de la matriu és: $sum`: Finalment, l'script imprimeix la suma de tots els elements de la matriu.

    462

    Suma d'elements

    Més informació sobre els scripts de Shell

    Conclusió

    Tots els geeks sabem que el shell script és molt útil per augmentar la productivitat del treball i també per estalviar temps. Per tant, en aquest article hem tractat 30 exemples de scripts d'intèrpret d'ordres molt útils i la majoria d'estafadors . Esperem que aquesta guia completa sobre l'exemple de shell script us ajudi a entendre tot sobre els shell scripts.



    `: Si el directori està buit, aquesta línia imprimeix un missatge d'ús, on `

    Per a totes les distribucions de Linux, l'script shell és com una vareta màgica que automatitza el procés, estalvia temps als usuaris i augmenta la productivitat. Aquest tutorial de scripting us introduirà als 25 exemples de scripting.

    Però abans de passar al tema de shell scripting Per exemple, entenem l'script d'intèrpret d'ordres i els casos d'ús reals de l'script d'intèrpret d'ordres.

    Què és Shell Script?

    Bé, la closca és una CLI ( intèrpret de línia d'ordres ), que s'executa en una finestra de text on els usuaris poden gestionar i executar ordres de shell. D'altra banda, el procés d'escriure un conjunt d'ordres que s'executaran en un sistema Linux Un fitxer que inclou aquestes instruccions s'anomena script bash.

    Usos dels scripts de Shell

    A continuació es mostren alguns usos habituals de Shell Script:

    • Automatització de tasques – Es pot utilitzar per automatitzar tasques repetitives com ara còpies de seguretat habituals i tasques d'instal·lació de programari.
    • Personalització - Es pot utilitzar scripts d'intèrpret d'ordres per dissenyar el seu entorn de línia d'ordres i realitzar fàcilment la seva tasca segons les necessitats.
    • Gestió de fitxers - Els scripts d'intèrpret d'ordres també es poden utilitzar per gestionar i manipular fitxers i directoris, com ara moure, copiar, canviar el nom o suprimir fitxers.

    Exemples de script de Shell a Linux

    1) Què indica el shebang (#!) al començament d'un script de shell?

    El shebang (#!) al principi d'un script indica l'intèrpret que s'ha d'utilitzar per executar l'script. Indica al sistema quin shell o intèrpret ha d'interpretar les ordres de l'script.

    Per exemple: Suposem que tenim un script anomenat myscript.sh escrit a l'intèrpret d'ordres Bash:

    shebang

    shebang

    En aquest exemple:

    • El #!/bin/bash al començament de l'script indica que l'script s'ha d'interpretar mitjançant l'intèrpret d'ordres Bash.
    • Les ordres d'eco s'utilitzen per imprimir missatges al terminal.

    2) Com executeu un script de shell des de la línia d'ordres?

    Per executar un script de shell des de la línia d'ordres, hem de seguir aquests passos:

    • Assegureu-vos que el fitxer d'script tingui permisos executables mitjançant l' comanda chmod :
    chmod +x myscript.sh>
    • Executeu l'script utilitzant el seu nom de fitxer:
    ./myscript.sh>

    Aquí has ​​de substituir myscrtipt.sh amb el nom d'escriptura anterior.

    3) Escriviu un script d'intèrpret d'ordres que imprimeixi techcodeview.com al terminal.

    Creeu un nom d'script `myscript.sh` (estem utilitzant ` perquè ` editor, podeu triar qualsevol editor)

    vim myscript.sh>

    #!/bin/bash
    # Aquest script imprimeix techcodeview.com al terminal
    echo techcodeview.com

    Nom d'impressió

    Nom d'impressió

    Fem que el nostre script sigui executable utilitzant `chmod +x` i després executem amb `./myscipt.sh` i obtenim la nostra sortida desitjada techcodeview.com.

    4) Expliqueu el propòsit de l'ordre echo en els scripts de shell.

    El comanda d'eco s'utilitza per mostrar text o variables al terminal. S'utilitza habitualment per imprimir missatges, valors variables i generar resultats del programa.

    434

    comanda d'eco

    En aquest exemple hem executat `echo` directament al terminal, ja que funciona igual dins de l'script de shell.

    5) Com es pot assignar un valor a una variable en un script de shell?

    Les variables s'assignen valors mitjançant l'operador d'assignació =.

    Per exemple:

    #!/bin/bash
    # Assignació d'un valor a una variable
    nom=Jayesh
    edat = 21
    echo $nom $edat

    Explicació:

    • A la variable de nom se li assigna el valor Jayesh.
    • A la variable edat se li assigna el valor 21.
    • echo s'utilitza per imprimir i `$name` `$age` s'utilitza per cridar el valor emmagatzemat a les variables.

    435

    6) Escriu un script de shell que prengui el nom d'un usuari com a entrada i el saludi.

    Creeu un nom d'script `example.sh`.

    #!/bin/bash
    # Demaneu el seu nom a l'usuari
    echo Com et dius?
    llegir el nom
    # Saludeu l'usuari
    echo Hola, $name! Encantat de conèixer-te.

    Explicació:

    • #!/bin/bash: aquesta és la línia shebang. Indica al sistema que utilitzi l'intèrpret Bash per executar l'script.
    • # Demaneu el seu nom a l'usuari: Això és un comentari. Proporciona context sobre el codi proper. Els comentaris són ignorats per l'intèrpret.
    • echo Com et dius?: L'ordre echo s'utilitza per mostrar el text entre cometes dobles al terminal.
    • read name: l'ordre read espera que l'usuari introdueixi text i l'emmagatzema al nom de la variable.
    • echo Hola, $name! Encantat de conèixer-te.: Aquesta línia utilitza l'ordre echo per imprimir un missatge de salutació que inclou el valor de la variable de nom, que es va recopilar de l'entrada de l'usuari.

    436

    7) Com s'afegeixen comentaris a un script de shell?

    Comentaris en shell script s'utilitzen per proporcionar explicacions o context al codi. L'intèrpret els ignora i només estan pensats per als humans que llegeixen el guió. Podeu afegir comentaris amb el símbol #.

    #!/bin/bash
    # Aquest és un comentari que explica el propòsit del guió
    eco gfg

    8) Creeu un script d'intèrpret d'ordres que comprovi si existeix un fitxer al directori actual.

    Aquí hi ha un script que verifica si un fitxer anomenat example.txt existeix al directori actual:

    #!/bin/bash
    fitxer=exemple.txt
    # Comproveu si el fitxer existeix
    if [ -e $fitxer ]; aleshores
    echo El fitxer existeix: $fitxer
    altra cosa
    echo No s'ha trobat el fitxer: $fitxer
    ser

    Explicació:

    1. #!/bin/bash: Aquesta és la línia shebang que especifica l'intèrpret (/bin/bash) que s'utilitzarà per executar l'script.
    2. file=example.txt: aquesta línia defineix el fitxer variable i li assigna el valor example.txt. Podeu substituir-lo pel nom del fitxer que voleu comprovar.
    3. if [ -e $fitxer ]; then: Aquesta línia comença una sentència if. La condició [ -e $fitxer ] comprova si el fitxer especificat pel valor de la variable de fitxer existeix. El senyalador -e s'utilitza per comprovar l'existència de fitxers.
    4. echo El fitxer existeix: $fitxer: si la condició és certa (és a dir, el fitxer existeix), aquesta línia imprimeix un missatge que indica que el fitxer existeix, juntament amb el nom del fitxer.
    5. else: si la condició és falsa (és a dir, el fitxer no existeix), l'script executa el codi a la branca else.
    6. echo No s'ha trobat el fitxer: $fitxer: aquesta línia imprimeix un missatge d'error que indica que no s'ha trobat el fitxer especificat, juntament amb el nom del fitxer.
    7. fi: Aquesta línia marca el final de la instrucció if.
    Trobar fitxer

    Trobar fitxer

    9) Quina diferència hi ha entre cometes simples (‘) i cometes dobles () en els scripts de shell?

    Les cometes simples (‘) i les cometes dobles () s'utilitzen per incloure cadenes en els scripts d'intèrpret d'ordres, però tenen comportaments diferents:

    • Cometes simples: tot el que hi ha entre cometes simples es tracta com una cadena literal. Els noms de variables i la majoria de caràcters especials no s'amplien.
    • Cometes dobles: s'amplien les variables i certs caràcters especials dins de cometes dobles. Els continguts estan subjectes a substitució de variables i substitució d'ordres.

    #!/bin/bash

    abcd=Hola
    echo ‘$abcd’ # Sortida: $abcd
    echo $abcd # Sortida: Hola

    10) Com podeu utilitzar arguments de línia d'ordres en un script de shell?

    Arguments de la línia d'ordres són valors proporcionats a un script quan s'executa. S'hi pot accedir dins de l'script mitjançant variables especials com $1, $2, etc., on $1 representa el primer argument, $2 representa el segon argument, etc.

    Per exemple: Si el nostre nom d'script a `example.sh`

    #!/bin/bash

    echo Nom de l'script: $0
    echo Primer argument: $1
    echo Segon argument: $2

    Si executem l'script amb `.example.sh hello_1 hello_2`, sortirà:

    cli arguments

    cli arguments

    11) Com s'utilitza el bucle for per recórrer una llista de valors?

    Creeu un nom d'script `example.sh`.

    #!/bin/bash

    fruites=(data de cirera poma i plàtan)
    per a fruites a ${fruits[@]}; fer
    echo Fruita actual: $fruit
    fet

    Explicació:

    La línia `fruits=` crea una matriu anomenada fruites amb quatre elements: poma, plàtan, cirera i dàtil.

    • per a fruites a ${fruits[@]}; do: aquesta línia comença un bucle for. Aquí teniu el significat de cada part:
    • for fruit: declara una variable de bucle anomenada fruit. En cada iteració del bucle, fruit mantindrà el valor de l'element actual de la matriu de fruites.
    • ${fruits[@]}: aquesta és una expansió de matriu que pren tots els elements de la matriu de fruites. La sintaxi ${…} garanteix que cada element es tracti com un element separat.
    • do: aquesta paraula clau marca l'inici del cos del bucle.
    • echo Fruit actual: $fruit: Dins del bucle, aquesta línia utilitza l'ordre echo per mostrar el valor actual de la variable de bucle fruit. Imprimeix un missatge com ara Fruit actual: poma per a cada fruita de la matriu.
    • fet: aquesta paraula clau marca el final del cos del bucle. Indica a l'script que el bucle ha acabat.
    per bucle

    per bucle

    12) Escriu un script d'intèrpret d'ordres que calculi la suma dels nombres enters d'1 a N mitjançant un bucle.

    Creeu un nom d'script `example.sh`.

    #!/bin/bash

    echo Introduïu un número (N):
    llegir N
    suma=0
    per (( i=1; i<=$N; i++ )); fer
    suma=$((suma + i))
    fet
    echo La suma dels nombres enters d'1 a $N és: $sum

    Explicació:
    L'script comença demanant-vos que introduïu un número (N) mitjançant la lectura. Aquest número determinarà quantes vegades s'executa el bucle.

    1. La variable suma s'inicialitza a 0. Aquesta variable farà un seguiment de la suma dels nombres enters.
    2. El bucle for comença amb for (( i=1; i<=$N; i++ )). Aquesta estructura de bucle s'utilitza per repetir un conjunt d'accions un nombre determinat de vegades, en aquest cas, des d'1 fins al valor de N.
    3. Dins del bucle, passen aquestes coses:
      • i=1 estableix la variable de bucle i a 1 al començament de cada iteració.
      • La condició de bucle i<=$N comprova si i encara és menor o igual que el nombre donat N.
      • Si la condició és certa, el cos del bucle s'executa.
      • sum=$((suma + i)) calcula el nou valor de suma afegint-hi el valor actual de i. Això suma els nombres enters de 1 al valor i actual.
    4. Després de cada iteració, i++ augmenta el valor de i en 1.
    5. El bucle continua funcionant fins que la condició i<=$N esdevé falsa (quan i és més gran que N).
    6. Un cop finalitza el bucle, l'script mostra la suma dels nombres enters des de l'1 fins al número introduït N.

    439

    13) Creeu un script que cerqui una paraula específica en un fitxer i compta les seves ocurrències.

    Creeu un nom d'script `word_count.sh`

    #!/bin/bash

    echo Introduïu la paraula per cercar:
    llegir paraula_destinació
    echo Introduïu el nom del fitxer:
    llegir el nom del fitxer
    count=$(grep -o -w $paraula_objectiu $nomfitxer | wc -l)
    echo La paraula '$target_word' apareix $count times a '$filename'.

    Explicació:

    • echo Introduïu la paraula a cercar:: Aquesta línia mostra un missatge demanant a l'usuari que introdueixi una paraula que vol cercar en un fitxer.
    • read target_word: Aquesta línia llegeix l'entrada proporcionada per l'usuari i l'emmagatzema en una variable anomenada target_word.
    • echo Introduïu el nom del fitxer:: Aquesta línia mostra un missatge demanant a l'usuari que introdueixi el nom del fitxer en què vol cercar.
    • llegir nom de fitxer: aquesta línia llegeix l'entrada proporcionada per l'usuari i l'emmagatzema en una variable anomenada nom de fitxer.
    • count=$(grep -o -w $target_word $filename | wc -l): Aquesta línia fa el treball principal de l'script. Anem a desglossar-ho més:
      • grep -o -w $target_word $filename: aquesta part de l'ordre cerca les ocurrències de la paraula_destinació al nom de fitxer especificat. Les opcions -o i -w asseguren que només es compten les coincidències de paraules senceres.
      • |: Aquesta és una canalització, que pren la sortida de l'ordre anterior i l'envia com a entrada a l'ordre següent.
      • wc -l: aquesta part de l'ordre utilitza l'ordre wc per comptar el nombre de línies de l'entrada. L'opció -l compta específicament les línies.
      • L'ordre sencera calcula el recompte d'ocurrències de la paraula_destinació al fitxer i assigna aquest recompte a la variable count

    441

    14) Expliqueu les diferències entre la sortida estàndard (stdout) i l'error estàndard (stderr).

    La diferència principal entre la sortida estàndard (stdout) i l'error estàndard (stderr) és la següent:

    • Sortida estàndard (stdout): Aquest és el flux de sortida predeterminat on va la sortida normal d'una ordre. Es mostra al terminal de manera predeterminada. Podeu redirigir-lo a un fitxer mitjançant>.
    • Error estàndard (stderr): Aquest és el flux de sortida dels missatges d'error i advertències. També es mostra al terminal de manera predeterminada. Podeu redirigir-lo a un fitxer mitjançant 2>.

    15) Expliqueu el concepte de sentències condicionals en shell scripting.

    Declaracions condicionals en scripts de shell ens permeten prendre decisions i controlar el flux del nostre guió en funció de determinades condicions. Permeten que el nostre script executi diferents conjunts d'ordres depenent de si una condició concreta és certa o falsa. Les sentències condicionals primàries en els scripts d'intèrpret d'ordres són la sentència if, la sentència elif (opcional) i la sentència else (opcional).

    A continuació, es mostra l'estructura bàsica d'una instrucció condicional en scripts de shell:

    si [condició]; aleshores
    # Ordres per executar si la condició és certa
    elif [una altra_condició]; aleshores
    # Ordres per executar si una altra_condició és certa (opcional)
    altra cosa
    # Ordres per executar si cap de les condicions és certa (opcional)
    ser

    Explicació:

    • [condició] = Ordre que avalua la condició i retorna un estat de sortida veritable (0) o fals (no zero).
    • then = És una paraula clau que indica que les ordres que la segueixen s'executaran si la condició s'avalua com a vertadera.
    • elif = (abreviatura de else if) És una secció que ens permet especificar condicions addicionals per comprovar.
    • else = és una secció que conté ordres que s'executaran si cap de les condicions és certa.
    • fi = És una paraula clau que marca el final del bloc condicional.

    16) Com llegiu les línies d'un fitxer dins d'un script de shell?

    A llegir línies des d'un fitxer dins d'un script d'intèrpret d'ordres, podem utilitzar diversos mètodes, però un enfocament comú és utilitzar un bucle while en combinació amb l'ordre read. Així és com ho podem fer:

    #!/bin/bash
    fitxer=/home/jayeshkumar/jayesh.txt
    # Comproveu si el fitxer existeix
    if [ -e $fitxer ]; aleshores
    mentre que IFS= llegeix la línia -r; fer
    echo Line read: $line
    # Afegiu aquí la vostra lògica de processament
    fet <$fitxer
    altra cosa
    echo No s'ha trobat el fitxer: $fitxer
    ser

    Explicació:

    1. #!/bin/bash: Aquesta és la línia shebang que especifica l'intèrpret (/bin/bash) que s'utilitzarà per executar l'script.
    2. file=/home/jayeshkumar/jayesh.txt: aquesta línia defineix el fitxer variable i assigna el camí complet al fitxer jayesh.txt al directori /home/jayeshkumar. Canvieu aquest camí perquè coincideixi amb el camí real del fitxer que voleu llegir.
    3. if [ -e $fitxer ]; then: Aquesta línia comença una sentència if. Comprova si el fitxer especificat per la variable $file existeix. El senyalador -e comprova l'existència del fitxer.
    4. mentre que IFS= llegeix la línia -r; do: aquesta línia inicia un bucle while que llegeix les línies del fitxer.
      • IFS=: l'IFS (Internal Field Separator) s'estableix en un valor buit per preservar els espais inicials i finals.
      • read -r line: llegeix la línia actual del fitxer i l'emmagatzema a la línia variable.
    5. echo Line read: $line: Aquesta línia imprimeix el contingut de la línia que s'ha llegit del fitxer. La variable $line conté el contingut de la línia actual.
    6. # Afegiu la vostra lògica de processament aquí: aquest és un comentari de marcador de posició on podeu afegir la vostra pròpia lògica per processar cada línia. Per exemple, podeu analitzar la línia, extreure informació o realitzar accions específiques basades en el contingut.
    7. done <$file: Això marca el final del bucle while. El < $file redirigeix ​​el contingut del fitxer per ser llegit pel bucle.
    8. else: si el fitxer no existeix (la condició de la instrucció if és falsa), l'script executa el codi a la branca else.
    9. echo No s'ha trobat el fitxer: $fitxer: aquesta línia imprimeix un missatge d'error que indica que no s'ha trobat el fitxer especificat.
    10. fi: Aquesta línia marca el final de la instrucció if.
    fitxer de lectura

    fitxer de lectura

    Aquí hem utilitzat ` pwd ` comanda per obtenir la ruta del directori actual.

    17) Escriu una funció en un script de shell que calculi el factorial d'un nombre donat.

    Aquí teniu el guió quecalcula el factoriald'un nombre donat.

    #!/bin/bash
    # Definiu una funció per calcular factorial
    calcula_factorial() {
    num=$1
    fet = 1
    per ((i=1; i<=núm; i++)); fer
    fet=$((fet * i))
    fet
    echo $fet
    }
    # Demaneu a l'usuari que introdueixi un número
    echo Introduïu un número:
    llegir input_num
    # Truqueu a la funció calculate_factorial amb el número d'entrada
    factor_result=$(calcular_factorial $núm_entrada)
    # Mostra el resultat factorial
    echo El factor de $núm_entrada és: $resultat_factorial

    Explicació:

    1. L'script comença amb la línia shebang #!/bin/bash per especificar l'intèrpret.
    2. calculate_factorial() es defineix com una funció. Es necessita un argument, num, que és el nombre pel qual s'ha de calcular el factorial.
    3. Dins de la funció, fact s'inicialitza a 1. Aquesta variable emmagatzemarà el resultat factorial.
    4. El bucle for itera des de l'1 fins al nombre donat (num). En cada iteració, multiplica el valor actual de fet per l'índex de bucle i.
    5. Un cop finalitzat el bucle, la variable de fet conté el factorial calculat.
    6. L'script demana a l'usuari que introdueixi un número mitjançant la lectura.
    7. La funció calculate_factorial es crida amb el número proporcionat per l'usuari i el resultat s'emmagatzema a la variable factorial_result.
    8. Finalment, l'script mostra el resultat factorial calculat.
    Factorial

    Factorial

    18) Com gestioneu senyals com Ctrl + C en un script de shell?

    En un script d'intèrpret d'ordres, podeu gestionar senyals com Ctrl+C (també conegut com SIGINT) mitjançant l'ordre trap. Ctrl+C genera un senyal SIGINT quan l'usuari el prem per interrompre l'script o programa en execució. Mitjançant l'ordre trap, podeu especificar les accions que cal dur a terme quan es rep un senyal concret. A continuació s'explica com gestioneu senyals com Ctrl+C en un script de shell:

    #!/bin/bash
    netejar() {
    echo Script interromput. S'està fent la neteja...
    # Afegeix aquí les teves accions de neteja
    sortida 1
    }
    # Configureu una trampa per trucar a la funció de neteja quan es rebi Ctrl+C (SIGINT).
    neteja de paranys SIGINT
    # La resta del vostre guió
    echo Corrent...
    dormir 10
    eco Acabat.

    El maneig dels senyals és important per fer que els scripts siguin robusts i assegurar-se que gestionen les interrupcions inesperades amb gràcia. Podeu personalitzar la funció de neteja perquè s'ajusti a les vostres necessitats específiques, com ara tancar fitxers, aturar processos o registrar informació abans que surti l'script.

    Explicació:

    1. #!/bin/bash: aquesta línia shebang especifica l'intèrpret que s'utilitzarà per executar l'script.
    2. cleanup() { … }: Això defineix una funció anomenada cleanup. Dins d'aquesta funció, podeu incloure qualsevol acció que s'hagi de realitzar quan s'interromp l'script, com ara tancar fitxers, alliberar recursos o realitzar altres tasques de neteja.
    3. trap cleanup SIGINT: l'ordre trap s'utilitza per configurar un controlador de senyal. En aquest cas, especifica que quan es rep el senyal SIGINT (Ctrl+C), s'ha d'executar la funció de neteja.
    4. echo Running..., sleep 10, echo Finished.: Són només ordres d'exemple per simular l'execució d'un script.

    446

    19) Creeu un script que cerqui i elimineu les línies duplicades en un fitxer de text.

    Aquí teniu el nostre guió de Linux en el qual eliminarem les línies duplicades d'un fitxer de text.

    #!/bin/bash
    fitxer_entrada=input.txt
    fitxer_output=output.txt
    ordena $fitxer_entrada | uniq> $fitxer_sortida
    echo Les línies duplicades s'han eliminat correctament.

    Explicació:

    1. L'script comença amb un shebang (#!/bin/bash), que indica que l'script s'ha d'interpretar mitjançant l'intèrpret d'ordres Bash.
    2. La variable input_file s'estableix amb el nom del fitxer d'entrada que conté línies duplicades (canvieu-ho pel nom del fitxer d'entrada real).
    3. La variable output_file s'estableix amb el nom del fitxer de sortida on s'eliminaran els duplicats (canvieu-ho pel nom del fitxer de sortida desitjat).
    4. L'script utilitza l'ordre sort per ordenar les línies del fitxer d'entrada. L'ordenació de les línies garanteix que les línies duplicades s'agrupin.
    5. A continuació, les línies ordenades es passen per l'ordre uniq, que elimina les línies duplicades consecutives. La sortida d'aquest procés es redirigeix ​​al fitxer de sortida.
    6. Després d'eliminar els duplicats, l'script imprimeix un missatge d'èxit.
    eliminació de línies duplicades

    eliminació de línies duplicades

    Aquí, fem servir ` gat ` per mostrar el text dins del fitxer de text.

    20) Escriu un script que generi una contrasenya aleatòria segura.

    Aquí teniu el nostre script per generar una contrasenya aleatòria segura.

    #!/bin/bash
    # Funció per generar una contrasenya aleatòria
    genera_contrasenya() {
    tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
    }
    # Truqueu a la funció i emmagatzemeu la contrasenya generada
    contrasenya=$(genera_contrasenya)
    echo Contrasenya generada: $contrasenya

    Nota: En conseqüència, l'usuari pot canviar la longitud de la contrasenya substituint el número '12'.

    Explicació:

    1. L'script comença amb un shebang (#!/bin/bash), que indica que s'ha d'interpretar mitjançant l'intèrpret d'ordres Bash.
    2. La funció generate_password està definida per generar una contrasenya aleatòria. Així és com funciona:
      • tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
      • fold -w 12 divideix les dades aleatòries filtrades en línies d'amplada de 12 caràcters cadascuna.
      • head -n 1 selecciona la primera línia, donant-nos efectivament una seqüència aleatòria de caràcters de longitud 12.
    3. La variable de contrasenya s'assigna el resultat de cridar la funció generate_password.
    4. Finalment, la contrasenya generada es mostra amb echo.

    448

    21) Escriviu un script de shell que calculi la mida total de tots els fitxers d'un directori.

    Aquí hi ha un script de shell per calcular la mida total de tots els fitxers d'un directori.

    #!/bin/bash
    directori=/camí/al/teu/directori
    total_size=$(du -csh $directori | grep total | awk '{print $1}')
    echo Mida total dels fitxers a $directory: $total_size

    Explicació:

    1. L'script comença amb #!/bin/bash shebang, que indica que s'ha d'interpretar mitjançant l'intèrpret d'ordres Bash.
    2. La variable de directori s'estableix a la ruta del directori per al qual voleu calcular la mida total del fitxer. Substituïu /path/to/your/directory pel camí real.
    3. L'ordre du s'utilitza per estimar l'ús d'espai de fitxers. Les opcions utilitzades són:
      • -c: Produeix un gran total.
      • -s: Mostra només la mida total del directori especificat.
      • -h: mides d'impressió en un format llegible per persones (p. ex., KB, MB, GB).
    4. La sortida de du s'envia a grep total per filtrar la línia que conté la mida total.
    5. awk '{print $1}' s'utilitza per extreure el primer camp (mida total) de la línia.
    6. La mida total calculada s'emmagatzema a la variable total_size.
    7. Finalment, l'script mostra la mida total mitjançant echo.
    Mida total dels fitxers

    Mida total dels fitxers

    Aquí hem utilitzat ` pwd ` per veure la ruta del directori actual.

    22) Expliqueu la diferència entre les declaracions if i elif en els scripts d'intèrpret d'ordres.

    Característica `si`Staiftement Declaració 'elif'.
    Propòsit Expliqueu la diferència entre les declaracions if i elif en els scripts de shell. Proporciona condicions alternatives per comprovar quan la condició inicial si és falsa.
    ús S'utilitza per a la condició inicial. S'utilitza després de la condició si inicial per comprovar condicions addicionals.
    nombre de blocs Només pot tenir un bloc si. Pot tenir diversos blocs elif, però només un altre bloc (opcional).
    Execució Executa el bloc de codi associat a la instrucció if si la condició és certa. Si la condició és falsa, s'executa el bloc else (si està present) (opcional). Comprova cada condició elif en ordre. Si una condició elif és certa, s'executa el bloc de codi corresponent i l'script surt de tot el bloc condicional. Si cap de les condicions elif és certa, s'executa el bloc else (si està present).
    Estructures imbricades Es pot imbricar dins d'altres blocs if, elif o else. No es pot niuar dins d'un altre bloc elif, però es pot utilitzar dins d'un bloc if o else.

    Entenem-ho amb un exemple.

    #!/bin/bash
    nombre=5
    if [ $número -gt 10 ]; aleshores
    echo $número és més gran que 10
    altra cosa
    echo $número no és més gran que 10
    ser
    eco ———
    if [ $número -gt 10 ]; aleshores
    echo $número és més gran que 10
    elif [ $número -eq 10 ]; aleshores
    echo $número és igual a 10
    altra cosa
    echo $número és inferior a 10
    ser

    Explicació:

    En aquest exemple, el primer bloc if comprova si el nombre és més gran que 10. Si no, imprimeix un missatge que indica que el nombre no és superior a 10. El segon bloc amb declaracions elif verifica múltiples condicions seqüencialment fins que una d'elles és certa. En aquest cas, com que el valor del nombre és 5, la sortida serà:

    if_elif diferència

    if_elif diferència

    23) Com s'utilitza un bucle while per executar ordres repetidament?

    Un bucle while s'utilitza en els scripts d'intèrpret d'ordres per executar repetidament un conjunt d'ordres sempre que una condició especificada sigui certa. El bucle continua executant les ordres fins que la condició esdevé falsa.

    Aquí teniu la sintaxi bàsica d'un bucle while:

    mentre que [condició]; fer
    # Ordres a executar
    fet

    Explicació:

    1. El bucle `while` comença amb la paraula clau `while` seguida d'una condició entre claudàtors `[ ]`.
    2. El cos del bucle, que conté les ordres que s'han d'executar, es troba dins de les paraules clau 'do' i 'fet'.
    3. El bucle comprova primer la condició. Si la condició és certa, s'executen les ordres dins del cos del bucle. Un cop s'executa el cos del bucle, la condició es torna a comprovar i el procés es repeteix fins que la condició esdevé falsa.

    Exemple: Si volem imprimir números de l'1 al 5

    #!/bin/bash
    comptador=1
    mentre que [ $comptador -le 5 ]; fer
    echo Number: $comptador
    comptador=$((comptador + 1))
    fet

    Explicació:

    • La variable del comptador s'estableix a 1.
    • El bucle while comprova si el valor del comptador és menor o igual a 5. Mentre aquesta condició sigui certa, el bucle continua executant-se.
    • Dins del bucle, el valor actual del comptador s'imprimeix mitjançant echo.
    • El comptador s'incrementa en 1 mitjançant l'expressió $((comptador + 1)).
    bucle while

    bucle while

    24) Creeu un script d'intèrpret d'ordres que trobi i llista tots els fitxers buits d'un directori.

    Script de Shell que podeu utilitzar per trobar i llistar tots els fitxers buits d'un directori mitjançant les ordres `find' i `stat`:

    #!/bin/bash
    directori=$1″
    if [ -z $directori ]; aleshores
    echo Ús: $0
    sortida 1
    ser

    si [ ! -d $directori ]; aleshores
    echo Error: '$directory' no és un directori vàlid.
    sortida 1
    ser
    echo Fitxers buits al directori $:
    cerca $directory -type f -empty

    Explicació:

    1. ` #!/bin/bash `: Això s'anomena shebang i diu al sistema operatiu que utilitzi l'intèrpret d'ordres Bash per interpretar i executar l'script.
    2. ` directori=$1″ `: Aquesta línia assigna el primer argument de la línia d'ordres (indicat per $1) a la variable ` directori `.
    3. ` if [ -z $directori ]; aleshores `: Aquesta línia comença una instrucció if que verifica si el ` directori ` La variable està buida (-z prova una cadena buida).
    4. ` echo Ús: $0 `: Si el directori està buit, aquesta línia imprimeix un missatge d'ús, on ` $0 ` representa el nom del guió.
    5. ` sortida 1 `: aquesta línia surt de l'script amb un codi de sortida de ` 1 `, que indica un error.
    6. ` ser `: aquesta línia marca el final del ` si ` declaració.
    7. ` si [ ! -d $directori ]; aleshores `: S'inicia una altra instrucció if per comprovar si el directori proporcionat existeix (` -d ` proves per a un directori).
    8. ` echo Error: '$directory' no és un directori vàlid. `: Si el directori proporcionat no existeix, aquesta línia imprimeix un missatge d'error.
    9. ` sortida 1 `: surt de l'script amb un codi de sortida de ` 1 `.
    10. ` ser `: Marca el final del segon ` si' declaració.
    11. ` echo Fitxers buits al directori $: `: Si tot és vàlid fins ara, aquesta línia imprimeix un missatge que indica que l'script enumerarà els fitxers buits al directori especificat.
    12. ` cerca $directory -type f -empty `: aquesta línia utilitza el ` trobar ` ordre per cercar fitxers buits (` -buit `) de tipus fitxers normals (` -tipus f `) al directori especificat. A continuació, enumera aquests fitxers buits.
    Trobar fitxers buits

    Trobar fitxers buits

    Nota : Hem de proporcionar un directori com a argument en executar l'script. Aquí hem utilitzat la ruta del directori actual home/jayeshkumar/

    25) Quin és l'objectiu de l'ordre de lectura en els scripts d'intèrpret d'ordres?

    L'ordre de lectura dels scripts d'intèrpret d'ordres permet que l'script us demani informació. És com quan un ordinador et fa una pregunta i espera la teva resposta. Això és útil per a scripts que necessiten que escriviu alguna cosa o per quan l'script necessita treballar amb informació dels fitxers. L'ordre de lectura ajuda a aturar l'script i esperar el que escriviu, i després pot utilitzar aquesta informació per fer més coses a l'script.

    Sintaxi de l'ordre de lectura:

    read variable_name>

    Exemple : Si volem prendre el nom com a entrada de l'usuari per imprimir-lo.

    #!/bin/bash
    echo Introduïu el vostre nom:
    llegir el nom
    echo Hola, $name!

    453

    llegir nom

    En resum, l'ordre read s'utilitza per capturar l'entrada de l'usuari o les dades dels fitxers dins dels scripts d'intèrpret d'ordres, fent que els scripts siguin més interactius i versàtils.

    26) Escriu un script d'intèrpret d'ordres que converteixi tots els noms de fitxers d'un directori a minúscules.

    Aquí hi ha un script d'intèrpret d'ordres que converteix tots els noms de fitxer d'un directori a minúscules.

    #!/bin/bash
    directori=$1″
    if [ -z $directori ]; aleshores
    echo Ús: $0
    sortida 1
    ser

    si [ ! -d $directori ]; aleshores

    echo Error: '$directory' no és un directori vàlid.
    sortida 1
    ser

    cd $directori || sortida 1

    per al fitxer en *; fer
    if [ -f $fitxer ]; aleshores
    nounom=$(eco $fitxer | tr ‘A-Z’ ‘a-z’)
    [ $fitxer != $nom nou ] && mv $fitxer $nom nou
    ser
    fet

    Explicació:

    1. #!/bin/bash : Aquest és el shebang, que especifica que l'script s'ha d'interpretar mitjançant l'intèrpret d'ordres Bash.
    2. directori=$1″ : Aquesta línia assigna el primer argument de la línia d'ordres al directori de variables.
    3. if [ -z $directori ]; aleshores : Aquesta línia comprova si la variable de directori està buida (no es proporciona cap argument en executar l'script).
    4. echo Ús: $0 : Si el directori està buit, aquesta línia imprimeix un missatge d'ús amb el nom de l'script ($0).
    5. sortida 1 : Aquesta línia surt de l'script amb un codi de sortida 1, que indica que s'ha produït un error.
    6. f i: Això marca el final de la primera declaració if.
    7. si [ ! -d $directori]; aleshores : Aquesta línia comprova si el directori especificat no existeix (-d prova per a un directori).
    8. echo Error: '$directory' no és un directori vàlid. : Si el directori especificat no existeix, aquesta línia imprimeix un missatge d'error.
    9. sortida 1 : surt de l'script amb un codi de sortida d'1.
    10. ser : Marca el final de la segona declaració if.
    11. cd $directori || sortida 1 : Canvia el directori de treball actual al directori especificat. Si el canvi de directori falla (p. ex., directori inexistent), l'script surt amb un codi d'error.
    12. per al fitxer en *; fer: jo per al fitxer en *; fer: inicia un bucle que itera sobre tots els elements del directori actual (* coincideix amb tots els noms de fitxer).
    13. if [ -f $fitxer ]; aleshores : Comprova si l'element d'iteració del bucle actual és un fitxer normal (-f prova per a un fitxer normal).
    14. nounom=$(eco $fitxer | tr ‘A-Z’ ‘a-z’) : Converteix el nom del fitxer actual ($fitxer) a minúscules mitjançant l'ordre tr i emmagatzema el resultat a la variable newname.
    15. [ $fitxer != $nom nou ] && mv $fitxer $nom nou : compara el nom del fitxer original amb el nou nom del fitxer en minúscules. Si són diferents, canvia el nom del fitxer mitjançant l'ordre mv.
    16. ser : Marca el final de la declaració si interna.
    17. fet : Marca el final del bucle.

    454

    Nota : Hem de proporcionar un directori com a argument en executar l'script. Aquí hem utilitzat la ruta del directori actual home/jayeshkumar/test

    27) Com podeu utilitzar operacions aritmètiques dins d'un script de shell?

    Les operacions aritmètiques es poden realitzar dins d'un script de shell utilitzant diversos mètodes integrats. L'intèrpret d'ordres proporciona mecanismes per a càlculs aritmètics simples mitjançant l'expansió aritmètica Com:

    1. Expansió aritmètica ($((…)))
    2. Utilitzant l'ordre expr
    3. Utilitzant el comandament let

    Aquí teniu el nostre script Shell que explica els tres mètodes per a operacions aritmètiques.

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

    #Expansió aritmètica ($((…)))

    resultat=$((núm1 + núm2))
    echo Suma: $resultat

    #Usant l'ordre expr

    suma=$(expr $núm1 + $núm2)
    echo Suma: $sum

    #Usant el comandament let

    siguem suma = num1 + num2
    echo Suma: $sum

    Explicació:

    1. `#!/bin/bash` : Aquest és el shebang, que especifica que l'script s'ha d'interpretar mitjançant l'intèrpret d'ordres Bash.
    2. `núm1=10` i ` num2=5` : Aquestes línies assignen els valors 10 i 5 a les variables ` num1 ` i ` num2 `, respectivament.
    3. `#Expansió aritmètica ($((…)))` : Aquest és un comentari que indica l'inici de la secció que demostra l'expansió aritmètica.
    4. `resultat=$((núm1 + núm2))` : Aquesta línia utilitza l'expansió aritmètica per calcular la suma de ` núm1 ` i ` num2 ` i emmagatzema el resultat al fitxer ` resultat ` variable.
    5. `echo Sum: $resultat` : Aquesta línia imprimeix la suma calculada utilitzant el valor emmagatzemat al ` resultat ` variable.
    6. `#Usant l'ordre expr` : Aquest és un comentari que indica l'inici de la secció que demostra l'ús del ` expr ` ordre per a operacions aritmètiques.
    7. `suma=$(expr $núm1 + $núm2)` : Aquesta línia utilitza el ` expr ` ordre per calcular la suma de ` núm1 ` i ` num2 ` i emmagatzema el resultat al fitxer ` suma ` variable. Tingueu en compte que el ` expr L'ordre ` requereix espais al voltant dels operadors.
    8. `echo Sum: $sum` : Aquesta línia imprimeix la suma calculada utilitzant el valor emmagatzemat al ` suma ` variable.
    9. `#Usant l'ordre let` : Aquest és un comentari que indica l'inici de la secció que demostra l'ús del ` deixar ` ordre per a operacions aritmètiques.
    10. `deixar suma = num1 + num2″` : Aquesta línia utilitza el ` deixar ` ordre per calcular la suma de ` núm1 ` i ` num2 ` i assigna el resultat a ` suma ` variable. El ` deixar L'ordre ` no requereix espais al voltant dels operadors.
    11. `echo Sum: $sum` : Aquesta línia imprimeix la suma calculada utilitzant el valor emmagatzemat al ` suma ` variable.
    aritmètica

    aritmètica

    28) Creeu un script que comprovi si es pot accedir a un host de xarxa.

    Aquí hi ha un script d'intèrpret d'ordres senzill que utilitza l'ordre ping per comprovar si es pot accedir a un host de xarxa:

    #!/bin/bash
    amfitrió=$1″
    if [ -z $amfitrió ]; aleshores
    echo Ús: $0
    sortida 1
    ser
    ping -c 4 $host

    si [ $? -eq 0]; aleshores
    echo $host és accessible.
    altra cosa
    echo $host no és accessible.
    ser

    Explicació:

    1. Pren un nom d'amfitrió o una adreça IP com a argument i comprova si es proporciona l'argument.
    2. Si no es proporciona cap argument, mostra un missatge d'ús i surt.
    3. Utilitza l'ordre ping amb l'opció -c 4 per enviar quatre sol·licituds d'eco ICMP a l'amfitrió especificat.
    4. Després d'executar l'ordre ping, comprova l'estat de sortida ($?). Si l'estat de sortida és 0, vol dir que l'amfitrió és accessible i l'script imprimeix un missatge d'èxit. En cas contrari, imprimeix un missatge d'error.

    456

    Nota : Hem de proporcionar un nom d'amfitrió com a argument quan executem l'script. Aquí hem utilitzat google.com

    29) Escriu un script de Shell per trobar l'element més gran d'una matriu:

    Aquí hi ha un script de shell per trobar l'element més gran d'una matriu.

    #!/bin/bash
    # Declarar una matriu
    matriu=(3 56 24 89 67)

    # Inicialitzeu una variable per emmagatzemar el valor màxim, començant pel primer element

    max=${array[0]}

    # Iterar per la matriu

    per num a ${array[@]}; fer

    # Compara cada element amb el màxim actual

    si ((número> màxim)); aleshores
    màxim=$núm
    ser
    fet

    # Imprimeix el valor màxim

    echo L'element màxim de la matriu és: $max

    Explicació:

    1. ` #!/bin/bash `: La línia shebang especifica que l'script s'ha d'interpretar mitjançant l'intèrpret d'ordres Bash.
    2. ` matriu=(3 56 24 89 67) `: La matriu es declara i s'inicia amb valors.
    3. ` max=${array[0]} `: `max` s'inicialitza amb el primer element de la matriu.
    4. ` per num a ${array[@]}; fer `: Un bucle `for` s'utilitza per iterar pels elements de la matriu.
    5. ` si ((número> màxim)); aleshores `: Una instrucció `if` verifica si l'element actual `num` és més gran que el màxim actual `max`.
    6. ` max=$num`: Si`núm ` és més gran que `max`, `max` s'actualitza amb el valor de num.
    7. ` fet `: El bucle `for` està tancat.
    8. ` echo L'element màxim de la matriu és: $max `: Finalment, l'script imprimeix el valor màxim trobat a la matriu.
    461

    nombre més gran

    30) Escriu un guió per calcular la suma dels elements d'una matriu.

    #!/bin/bash

    # Declarar una matriu

    matriu=(1 65 22 19 94)

    # Inicialitzar una variable per emmagatzemar la suma

    suma=0

    # Iterar per la matriu i afegir cada element a la suma

    per num a ${array[@]}; fer
    am=$((am + am))
    fet

    # Imprimeix la suma

    echo La suma d'elements de la matriu és: $sum

    Explicació:

    ` #!/bin/bash `: La línia shebang especifica que l'script s'ha d'interpretar mitjançant l'intèrpret d'ordres Bash.

    ` matriu=(1 65 22 19 94) `: La matriu es declara i s'inicia amb valors.

    ` suma=0 `: ` suma ` s'inicia a zero per contenir la suma d'elements.

    ` per num a ${array[@]}; fer `: A` per ` bucle s'utilitza per iterar a través dels elements de la matriu.

    ` am=$((am + am)) `: Dins del bucle, cada element ` en una ` s'afegeix al ` suma ` variable.

    ` fet `: El ` per ` el bucle està tancat.

    `echo La suma d'elements de la matriu és: $sum`: Finalment, l'script imprimeix la suma de tots els elements de la matriu.

    462

    Suma d'elements

    Més informació sobre els scripts de Shell

    Conclusió

    Tots els geeks sabem que el shell script és molt útil per augmentar la productivitat del treball i també per estalviar temps. Per tant, en aquest article hem tractat 30 exemples de scripts d'intèrpret d'ordres molt útils i la majoria d'estafadors . Esperem que aquesta guia completa sobre l'exemple de shell script us ajudi a entendre tot sobre els shell scripts.



    ` representa el nom del guió.
  5. ` sortida 1 `: aquesta línia surt de l'script amb un codi de sortida de ` 1 `, que indica un error.
  6. ` ser `: aquesta línia marca el final del ` si ` declaració.
  7. ` si [ ! -d $directori ]; aleshores `: S'inicia una altra instrucció if per comprovar si el directori proporcionat existeix (` -d ` proves per a un directori).
  8. ` echo Error: '$directory' no és un directori vàlid. `: Si el directori proporcionat no existeix, aquesta línia imprimeix un missatge d'error.
  9. ` sortida 1 `: surt de l'script amb un codi de sortida de ` 1 `.
  10. ` ser `: Marca el final del segon ` si' declaració.
  11. ` echo Fitxers buits al directori $: `: Si tot és vàlid fins ara, aquesta línia imprimeix un missatge que indica que l'script enumerarà els fitxers buits al directori especificat.
  12. ` cerca $directory -type f -empty `: aquesta línia utilitza el ` trobar ` ordre per cercar fitxers buits (` -buit `) de tipus fitxers normals (` -tipus f `) al directori especificat. A continuació, enumera aquests fitxers buits.
Trobar fitxers buits

Trobar fitxers buits

Nota : Hem de proporcionar un directori com a argument en executar l'script. Aquí hem utilitzat la ruta del directori actual home/jayeshkumar/

25) Quin és l'objectiu de l'ordre de lectura en els scripts d'intèrpret d'ordres?

L'ordre de lectura dels scripts d'intèrpret d'ordres permet que l'script us demani informació. És com quan un ordinador et fa una pregunta i espera la teva resposta. Això és útil per a scripts que necessiten que escriviu alguna cosa o per quan l'script necessita treballar amb informació dels fitxers. L'ordre de lectura ajuda a aturar l'script i esperar el que escriviu, i després pot utilitzar aquesta informació per fer més coses a l'script.

Sintaxi de l'ordre de lectura:

read variable_name>

Exemple : Si volem prendre el nom com a entrada de l'usuari per imprimir-lo.

#!/bin/bash
echo Introduïu el vostre nom:
llegir el nom
echo Hola, $name!

453

llegir nom

En resum, l'ordre read s'utilitza per capturar l'entrada de l'usuari o les dades dels fitxers dins dels scripts d'intèrpret d'ordres, fent que els scripts siguin més interactius i versàtils.

26) Escriu un script d'intèrpret d'ordres que converteixi tots els noms de fitxers d'un directori a minúscules.

Aquí hi ha un script d'intèrpret d'ordres que converteix tots els noms de fitxer d'un directori a minúscules.

#!/bin/bash
directori=″
if [ -z $directori ]; aleshores
echo Ús:

Per a totes les distribucions de Linux, l'script shell és com una vareta màgica que automatitza el procés, estalvia temps als usuaris i augmenta la productivitat. Aquest tutorial de scripting us introduirà als 25 exemples de scripting.

Però abans de passar al tema de shell scripting Per exemple, entenem l'script d'intèrpret d'ordres i els casos d'ús reals de l'script d'intèrpret d'ordres.

Què és Shell Script?

Bé, la closca és una CLI ( intèrpret de línia d'ordres ), que s'executa en una finestra de text on els usuaris poden gestionar i executar ordres de shell. D'altra banda, el procés d'escriure un conjunt d'ordres que s'executaran en un sistema Linux Un fitxer que inclou aquestes instruccions s'anomena script bash.

Usos dels scripts de Shell

A continuació es mostren alguns usos habituals de Shell Script:

  • Automatització de tasques – Es pot utilitzar per automatitzar tasques repetitives com ara còpies de seguretat habituals i tasques d'instal·lació de programari.
  • Personalització - Es pot utilitzar scripts d'intèrpret d'ordres per dissenyar el seu entorn de línia d'ordres i realitzar fàcilment la seva tasca segons les necessitats.
  • Gestió de fitxers - Els scripts d'intèrpret d'ordres també es poden utilitzar per gestionar i manipular fitxers i directoris, com ara moure, copiar, canviar el nom o suprimir fitxers.

Exemples de script de Shell a Linux

1) Què indica el shebang (#!) al començament d'un script de shell?

El shebang (#!) al principi d'un script indica l'intèrpret que s'ha d'utilitzar per executar l'script. Indica al sistema quin shell o intèrpret ha d'interpretar les ordres de l'script.

Per exemple: Suposem que tenim un script anomenat myscript.sh escrit a l'intèrpret d'ordres Bash:

shebang

shebang

En aquest exemple:

  • El #!/bin/bash al començament de l'script indica que l'script s'ha d'interpretar mitjançant l'intèrpret d'ordres Bash.
  • Les ordres d'eco s'utilitzen per imprimir missatges al terminal.

2) Com executeu un script de shell des de la línia d'ordres?

Per executar un script de shell des de la línia d'ordres, hem de seguir aquests passos:

  • Assegureu-vos que el fitxer d'script tingui permisos executables mitjançant l' comanda chmod :
chmod +x myscript.sh>
  • Executeu l'script utilitzant el seu nom de fitxer:
./myscript.sh>

Aquí has ​​de substituir myscrtipt.sh amb el nom d'escriptura anterior.

3) Escriviu un script d'intèrpret d'ordres que imprimeixi techcodeview.com al terminal.

Creeu un nom d'script `myscript.sh` (estem utilitzant ` perquè ` editor, podeu triar qualsevol editor)

vim myscript.sh>

#!/bin/bash
# Aquest script imprimeix techcodeview.com al terminal
echo techcodeview.com

Nom d'impressió

Nom d'impressió

Fem que el nostre script sigui executable utilitzant `chmod +x` i després executem amb `./myscipt.sh` i obtenim la nostra sortida desitjada techcodeview.com.

4) Expliqueu el propòsit de l'ordre echo en els scripts de shell.

El comanda d'eco s'utilitza per mostrar text o variables al terminal. S'utilitza habitualment per imprimir missatges, valors variables i generar resultats del programa.

434

comanda d'eco

En aquest exemple hem executat `echo` directament al terminal, ja que funciona igual dins de l'script de shell.

5) Com es pot assignar un valor a una variable en un script de shell?

Les variables s'assignen valors mitjançant l'operador d'assignació =.

Per exemple:

#!/bin/bash
# Assignació d'un valor a una variable
nom=Jayesh
edat = 21
echo $nom $edat

Explicació:

  • A la variable de nom se li assigna el valor Jayesh.
  • A la variable edat se li assigna el valor 21.
  • echo s'utilitza per imprimir i `$name` `$age` s'utilitza per cridar el valor emmagatzemat a les variables.

435

6) Escriu un script de shell que prengui el nom d'un usuari com a entrada i el saludi.

Creeu un nom d'script `example.sh`.

#!/bin/bash
# Demaneu el seu nom a l'usuari
echo Com et dius?
llegir el nom
# Saludeu l'usuari
echo Hola, $name! Encantat de conèixer-te.

Explicació:

  • #!/bin/bash: aquesta és la línia shebang. Indica al sistema que utilitzi l'intèrpret Bash per executar l'script.
  • # Demaneu el seu nom a l'usuari: Això és un comentari. Proporciona context sobre el codi proper. Els comentaris són ignorats per l'intèrpret.
  • echo Com et dius?: L'ordre echo s'utilitza per mostrar el text entre cometes dobles al terminal.
  • read name: l'ordre read espera que l'usuari introdueixi text i l'emmagatzema al nom de la variable.
  • echo Hola, $name! Encantat de conèixer-te.: Aquesta línia utilitza l'ordre echo per imprimir un missatge de salutació que inclou el valor de la variable de nom, que es va recopilar de l'entrada de l'usuari.

436

7) Com s'afegeixen comentaris a un script de shell?

Comentaris en shell script s'utilitzen per proporcionar explicacions o context al codi. L'intèrpret els ignora i només estan pensats per als humans que llegeixen el guió. Podeu afegir comentaris amb el símbol #.

#!/bin/bash
# Aquest és un comentari que explica el propòsit del guió
eco gfg

8) Creeu un script d'intèrpret d'ordres que comprovi si existeix un fitxer al directori actual.

Aquí hi ha un script que verifica si un fitxer anomenat example.txt existeix al directori actual:

#!/bin/bash
fitxer=exemple.txt
# Comproveu si el fitxer existeix
if [ -e $fitxer ]; aleshores
echo El fitxer existeix: $fitxer
altra cosa
echo No s'ha trobat el fitxer: $fitxer
ser

Explicació:

  1. #!/bin/bash: Aquesta és la línia shebang que especifica l'intèrpret (/bin/bash) que s'utilitzarà per executar l'script.
  2. file=example.txt: aquesta línia defineix el fitxer variable i li assigna el valor example.txt. Podeu substituir-lo pel nom del fitxer que voleu comprovar.
  3. if [ -e $fitxer ]; then: Aquesta línia comença una sentència if. La condició [ -e $fitxer ] comprova si el fitxer especificat pel valor de la variable de fitxer existeix. El senyalador -e s'utilitza per comprovar l'existència de fitxers.
  4. echo El fitxer existeix: $fitxer: si la condició és certa (és a dir, el fitxer existeix), aquesta línia imprimeix un missatge que indica que el fitxer existeix, juntament amb el nom del fitxer.
  5. else: si la condició és falsa (és a dir, el fitxer no existeix), l'script executa el codi a la branca else.
  6. echo No s'ha trobat el fitxer: $fitxer: aquesta línia imprimeix un missatge d'error que indica que no s'ha trobat el fitxer especificat, juntament amb el nom del fitxer.
  7. fi: Aquesta línia marca el final de la instrucció if.
Trobar fitxer

Trobar fitxer

9) Quina diferència hi ha entre cometes simples (‘) i cometes dobles () en els scripts de shell?

Les cometes simples (‘) i les cometes dobles () s'utilitzen per incloure cadenes en els scripts d'intèrpret d'ordres, però tenen comportaments diferents:

  • Cometes simples: tot el que hi ha entre cometes simples es tracta com una cadena literal. Els noms de variables i la majoria de caràcters especials no s'amplien.
  • Cometes dobles: s'amplien les variables i certs caràcters especials dins de cometes dobles. Els continguts estan subjectes a substitució de variables i substitució d'ordres.

#!/bin/bash

abcd=Hola
echo ‘$abcd’ # Sortida: $abcd
echo $abcd # Sortida: Hola

10) Com podeu utilitzar arguments de línia d'ordres en un script de shell?

Arguments de la línia d'ordres són valors proporcionats a un script quan s'executa. S'hi pot accedir dins de l'script mitjançant variables especials com $1, $2, etc., on $1 representa el primer argument, $2 representa el segon argument, etc.

Per exemple: Si el nostre nom d'script a `example.sh`

#!/bin/bash

echo Nom de l'script: $0
echo Primer argument: $1
echo Segon argument: $2

Si executem l'script amb `.example.sh hello_1 hello_2`, sortirà:

cli arguments

cli arguments

11) Com s'utilitza el bucle for per recórrer una llista de valors?

Creeu un nom d'script `example.sh`.

#!/bin/bash

fruites=(data de cirera poma i plàtan)
per a fruites a ${fruits[@]}; fer
echo Fruita actual: $fruit
fet

Explicació:

La línia `fruits=` crea una matriu anomenada fruites amb quatre elements: poma, plàtan, cirera i dàtil.

  • per a fruites a ${fruits[@]}; do: aquesta línia comença un bucle for. Aquí teniu el significat de cada part:
  • for fruit: declara una variable de bucle anomenada fruit. En cada iteració del bucle, fruit mantindrà el valor de l'element actual de la matriu de fruites.
  • ${fruits[@]}: aquesta és una expansió de matriu que pren tots els elements de la matriu de fruites. La sintaxi ${…} garanteix que cada element es tracti com un element separat.
  • do: aquesta paraula clau marca l'inici del cos del bucle.
  • echo Fruit actual: $fruit: Dins del bucle, aquesta línia utilitza l'ordre echo per mostrar el valor actual de la variable de bucle fruit. Imprimeix un missatge com ara Fruit actual: poma per a cada fruita de la matriu.
  • fet: aquesta paraula clau marca el final del cos del bucle. Indica a l'script que el bucle ha acabat.
per bucle

per bucle

12) Escriu un script d'intèrpret d'ordres que calculi la suma dels nombres enters d'1 a N mitjançant un bucle.

Creeu un nom d'script `example.sh`.

#!/bin/bash

echo Introduïu un número (N):
llegir N
suma=0
per (( i=1; i<=$N; i++ )); fer
suma=$((suma + i))
fet
echo La suma dels nombres enters d'1 a $N és: $sum

Explicació:
L'script comença demanant-vos que introduïu un número (N) mitjançant la lectura. Aquest número determinarà quantes vegades s'executa el bucle.

  1. La variable suma s'inicialitza a 0. Aquesta variable farà un seguiment de la suma dels nombres enters.
  2. El bucle for comença amb for (( i=1; i<=$N; i++ )). Aquesta estructura de bucle s'utilitza per repetir un conjunt d'accions un nombre determinat de vegades, en aquest cas, des d'1 fins al valor de N.
  3. Dins del bucle, passen aquestes coses:
    • i=1 estableix la variable de bucle i a 1 al començament de cada iteració.
    • La condició de bucle i<=$N comprova si i encara és menor o igual que el nombre donat N.
    • Si la condició és certa, el cos del bucle s'executa.
    • sum=$((suma + i)) calcula el nou valor de suma afegint-hi el valor actual de i. Això suma els nombres enters de 1 al valor i actual.
  4. Després de cada iteració, i++ augmenta el valor de i en 1.
  5. El bucle continua funcionant fins que la condició i<=$N esdevé falsa (quan i és més gran que N).
  6. Un cop finalitza el bucle, l'script mostra la suma dels nombres enters des de l'1 fins al número introduït N.

439

13) Creeu un script que cerqui una paraula específica en un fitxer i compta les seves ocurrències.

Creeu un nom d'script `word_count.sh`

#!/bin/bash

echo Introduïu la paraula per cercar:
llegir paraula_destinació
echo Introduïu el nom del fitxer:
llegir el nom del fitxer
count=$(grep -o -w $paraula_objectiu $nomfitxer | wc -l)
echo La paraula '$target_word' apareix $count times a '$filename'.

Explicació:

  • echo Introduïu la paraula a cercar:: Aquesta línia mostra un missatge demanant a l'usuari que introdueixi una paraula que vol cercar en un fitxer.
  • read target_word: Aquesta línia llegeix l'entrada proporcionada per l'usuari i l'emmagatzema en una variable anomenada target_word.
  • echo Introduïu el nom del fitxer:: Aquesta línia mostra un missatge demanant a l'usuari que introdueixi el nom del fitxer en què vol cercar.
  • llegir nom de fitxer: aquesta línia llegeix l'entrada proporcionada per l'usuari i l'emmagatzema en una variable anomenada nom de fitxer.
  • count=$(grep -o -w $target_word $filename | wc -l): Aquesta línia fa el treball principal de l'script. Anem a desglossar-ho més:
    • grep -o -w $target_word $filename: aquesta part de l'ordre cerca les ocurrències de la paraula_destinació al nom de fitxer especificat. Les opcions -o i -w asseguren que només es compten les coincidències de paraules senceres.
    • |: Aquesta és una canalització, que pren la sortida de l'ordre anterior i l'envia com a entrada a l'ordre següent.
    • wc -l: aquesta part de l'ordre utilitza l'ordre wc per comptar el nombre de línies de l'entrada. L'opció -l compta específicament les línies.
    • L'ordre sencera calcula el recompte d'ocurrències de la paraula_destinació al fitxer i assigna aquest recompte a la variable count

441

14) Expliqueu les diferències entre la sortida estàndard (stdout) i l'error estàndard (stderr).

La diferència principal entre la sortida estàndard (stdout) i l'error estàndard (stderr) és la següent:

  • Sortida estàndard (stdout): Aquest és el flux de sortida predeterminat on va la sortida normal d'una ordre. Es mostra al terminal de manera predeterminada. Podeu redirigir-lo a un fitxer mitjançant>.
  • Error estàndard (stderr): Aquest és el flux de sortida dels missatges d'error i advertències. També es mostra al terminal de manera predeterminada. Podeu redirigir-lo a un fitxer mitjançant 2>.

15) Expliqueu el concepte de sentències condicionals en shell scripting.

Declaracions condicionals en scripts de shell ens permeten prendre decisions i controlar el flux del nostre guió en funció de determinades condicions. Permeten que el nostre script executi diferents conjunts d'ordres depenent de si una condició concreta és certa o falsa. Les sentències condicionals primàries en els scripts d'intèrpret d'ordres són la sentència if, la sentència elif (opcional) i la sentència else (opcional).

A continuació, es mostra l'estructura bàsica d'una instrucció condicional en scripts de shell:

si [condició]; aleshores
# Ordres per executar si la condició és certa
elif [una altra_condició]; aleshores
# Ordres per executar si una altra_condició és certa (opcional)
altra cosa
# Ordres per executar si cap de les condicions és certa (opcional)
ser

Explicació:

  • [condició] = Ordre que avalua la condició i retorna un estat de sortida veritable (0) o fals (no zero).
  • then = És una paraula clau que indica que les ordres que la segueixen s'executaran si la condició s'avalua com a vertadera.
  • elif = (abreviatura de else if) És una secció que ens permet especificar condicions addicionals per comprovar.
  • else = és una secció que conté ordres que s'executaran si cap de les condicions és certa.
  • fi = És una paraula clau que marca el final del bloc condicional.

16) Com llegiu les línies d'un fitxer dins d'un script de shell?

A llegir línies des d'un fitxer dins d'un script d'intèrpret d'ordres, podem utilitzar diversos mètodes, però un enfocament comú és utilitzar un bucle while en combinació amb l'ordre read. Així és com ho podem fer:

#!/bin/bash
fitxer=/home/jayeshkumar/jayesh.txt
# Comproveu si el fitxer existeix
if [ -e $fitxer ]; aleshores
mentre que IFS= llegeix la línia -r; fer
echo Line read: $line
# Afegiu aquí la vostra lògica de processament
fet <$fitxer
altra cosa
echo No s'ha trobat el fitxer: $fitxer
ser

Explicació:

  1. #!/bin/bash: Aquesta és la línia shebang que especifica l'intèrpret (/bin/bash) que s'utilitzarà per executar l'script.
  2. file=/home/jayeshkumar/jayesh.txt: aquesta línia defineix el fitxer variable i assigna el camí complet al fitxer jayesh.txt al directori /home/jayeshkumar. Canvieu aquest camí perquè coincideixi amb el camí real del fitxer que voleu llegir.
  3. if [ -e $fitxer ]; then: Aquesta línia comença una sentència if. Comprova si el fitxer especificat per la variable $file existeix. El senyalador -e comprova l'existència del fitxer.
  4. mentre que IFS= llegeix la línia -r; do: aquesta línia inicia un bucle while que llegeix les línies del fitxer.
    • IFS=: l'IFS (Internal Field Separator) s'estableix en un valor buit per preservar els espais inicials i finals.
    • read -r line: llegeix la línia actual del fitxer i l'emmagatzema a la línia variable.
  5. echo Line read: $line: Aquesta línia imprimeix el contingut de la línia que s'ha llegit del fitxer. La variable $line conté el contingut de la línia actual.
  6. # Afegiu la vostra lògica de processament aquí: aquest és un comentari de marcador de posició on podeu afegir la vostra pròpia lògica per processar cada línia. Per exemple, podeu analitzar la línia, extreure informació o realitzar accions específiques basades en el contingut.
  7. done <$file: Això marca el final del bucle while. El < $file redirigeix ​​el contingut del fitxer per ser llegit pel bucle.
  8. else: si el fitxer no existeix (la condició de la instrucció if és falsa), l'script executa el codi a la branca else.
  9. echo No s'ha trobat el fitxer: $fitxer: aquesta línia imprimeix un missatge d'error que indica que no s'ha trobat el fitxer especificat.
  10. fi: Aquesta línia marca el final de la instrucció if.
fitxer de lectura

fitxer de lectura

Aquí hem utilitzat ` pwd ` comanda per obtenir la ruta del directori actual.

17) Escriu una funció en un script de shell que calculi el factorial d'un nombre donat.

Aquí teniu el guió quecalcula el factoriald'un nombre donat.

#!/bin/bash
# Definiu una funció per calcular factorial
calcula_factorial() {
num=$1
fet = 1
per ((i=1; i<=núm; i++)); fer
fet=$((fet * i))
fet
echo $fet
}
# Demaneu a l'usuari que introdueixi un número
echo Introduïu un número:
llegir input_num
# Truqueu a la funció calculate_factorial amb el número d'entrada
factor_result=$(calcular_factorial $núm_entrada)
# Mostra el resultat factorial
echo El factor de $núm_entrada és: $resultat_factorial

Explicació:

  1. L'script comença amb la línia shebang #!/bin/bash per especificar l'intèrpret.
  2. calculate_factorial() es defineix com una funció. Es necessita un argument, num, que és el nombre pel qual s'ha de calcular el factorial.
  3. Dins de la funció, fact s'inicialitza a 1. Aquesta variable emmagatzemarà el resultat factorial.
  4. El bucle for itera des de l'1 fins al nombre donat (num). En cada iteració, multiplica el valor actual de fet per l'índex de bucle i.
  5. Un cop finalitzat el bucle, la variable de fet conté el factorial calculat.
  6. L'script demana a l'usuari que introdueixi un número mitjançant la lectura.
  7. La funció calculate_factorial es crida amb el número proporcionat per l'usuari i el resultat s'emmagatzema a la variable factorial_result.
  8. Finalment, l'script mostra el resultat factorial calculat.
Factorial

Factorial

18) Com gestioneu senyals com Ctrl + C en un script de shell?

En un script d'intèrpret d'ordres, podeu gestionar senyals com Ctrl+C (també conegut com SIGINT) mitjançant l'ordre trap. Ctrl+C genera un senyal SIGINT quan l'usuari el prem per interrompre l'script o programa en execució. Mitjançant l'ordre trap, podeu especificar les accions que cal dur a terme quan es rep un senyal concret. A continuació s'explica com gestioneu senyals com Ctrl+C en un script de shell:

#!/bin/bash
netejar() {
echo Script interromput. S'està fent la neteja...
# Afegeix aquí les teves accions de neteja
sortida 1
}
# Configureu una trampa per trucar a la funció de neteja quan es rebi Ctrl+C (SIGINT).
neteja de paranys SIGINT
# La resta del vostre guió
echo Corrent...
dormir 10
eco Acabat.

El maneig dels senyals és important per fer que els scripts siguin robusts i assegurar-se que gestionen les interrupcions inesperades amb gràcia. Podeu personalitzar la funció de neteja perquè s'ajusti a les vostres necessitats específiques, com ara tancar fitxers, aturar processos o registrar informació abans que surti l'script.

Explicació:

  1. #!/bin/bash: aquesta línia shebang especifica l'intèrpret que s'utilitzarà per executar l'script.
  2. cleanup() { … }: Això defineix una funció anomenada cleanup. Dins d'aquesta funció, podeu incloure qualsevol acció que s'hagi de realitzar quan s'interromp l'script, com ara tancar fitxers, alliberar recursos o realitzar altres tasques de neteja.
  3. trap cleanup SIGINT: l'ordre trap s'utilitza per configurar un controlador de senyal. En aquest cas, especifica que quan es rep el senyal SIGINT (Ctrl+C), s'ha d'executar la funció de neteja.
  4. echo Running..., sleep 10, echo Finished.: Són només ordres d'exemple per simular l'execució d'un script.

446

19) Creeu un script que cerqui i elimineu les línies duplicades en un fitxer de text.

Aquí teniu el nostre guió de Linux en el qual eliminarem les línies duplicades d'un fitxer de text.

#!/bin/bash
fitxer_entrada=input.txt
fitxer_output=output.txt
ordena $fitxer_entrada | uniq> $fitxer_sortida
echo Les línies duplicades s'han eliminat correctament.

Explicació:

  1. L'script comença amb un shebang (#!/bin/bash), que indica que l'script s'ha d'interpretar mitjançant l'intèrpret d'ordres Bash.
  2. La variable input_file s'estableix amb el nom del fitxer d'entrada que conté línies duplicades (canvieu-ho pel nom del fitxer d'entrada real).
  3. La variable output_file s'estableix amb el nom del fitxer de sortida on s'eliminaran els duplicats (canvieu-ho pel nom del fitxer de sortida desitjat).
  4. L'script utilitza l'ordre sort per ordenar les línies del fitxer d'entrada. L'ordenació de les línies garanteix que les línies duplicades s'agrupin.
  5. A continuació, les línies ordenades es passen per l'ordre uniq, que elimina les línies duplicades consecutives. La sortida d'aquest procés es redirigeix ​​al fitxer de sortida.
  6. Després d'eliminar els duplicats, l'script imprimeix un missatge d'èxit.
eliminació de línies duplicades

eliminació de línies duplicades

Aquí, fem servir ` gat ` per mostrar el text dins del fitxer de text.

20) Escriu un script que generi una contrasenya aleatòria segura.

Aquí teniu el nostre script per generar una contrasenya aleatòria segura.

#!/bin/bash
# Funció per generar una contrasenya aleatòria
genera_contrasenya() {
tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
}
# Truqueu a la funció i emmagatzemeu la contrasenya generada
contrasenya=$(genera_contrasenya)
echo Contrasenya generada: $contrasenya

Nota: En conseqüència, l'usuari pot canviar la longitud de la contrasenya substituint el número '12'.

Explicació:

  1. L'script comença amb un shebang (#!/bin/bash), que indica que s'ha d'interpretar mitjançant l'intèrpret d'ordres Bash.
  2. La funció generate_password està definida per generar una contrasenya aleatòria. Així és com funciona:
    • tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
    • fold -w 12 divideix les dades aleatòries filtrades en línies d'amplada de 12 caràcters cadascuna.
    • head -n 1 selecciona la primera línia, donant-nos efectivament una seqüència aleatòria de caràcters de longitud 12.
  3. La variable de contrasenya s'assigna el resultat de cridar la funció generate_password.
  4. Finalment, la contrasenya generada es mostra amb echo.

448

21) Escriviu un script de shell que calculi la mida total de tots els fitxers d'un directori.

Aquí hi ha un script de shell per calcular la mida total de tots els fitxers d'un directori.

#!/bin/bash
directori=/camí/al/teu/directori
total_size=$(du -csh $directori | grep total | awk '{print $1}')
echo Mida total dels fitxers a $directory: $total_size

Explicació:

  1. L'script comença amb #!/bin/bash shebang, que indica que s'ha d'interpretar mitjançant l'intèrpret d'ordres Bash.
  2. La variable de directori s'estableix a la ruta del directori per al qual voleu calcular la mida total del fitxer. Substituïu /path/to/your/directory pel camí real.
  3. L'ordre du s'utilitza per estimar l'ús d'espai de fitxers. Les opcions utilitzades són:
    • -c: Produeix un gran total.
    • -s: Mostra només la mida total del directori especificat.
    • -h: mides d'impressió en un format llegible per persones (p. ex., KB, MB, GB).
  4. La sortida de du s'envia a grep total per filtrar la línia que conté la mida total.
  5. awk '{print $1}' s'utilitza per extreure el primer camp (mida total) de la línia.
  6. La mida total calculada s'emmagatzema a la variable total_size.
  7. Finalment, l'script mostra la mida total mitjançant echo.
Mida total dels fitxers

Mida total dels fitxers

Aquí hem utilitzat ` pwd ` per veure la ruta del directori actual.

22) Expliqueu la diferència entre les declaracions if i elif en els scripts d'intèrpret d'ordres.

Característica `si`Staiftement Declaració 'elif'.
Propòsit Expliqueu la diferència entre les declaracions if i elif en els scripts de shell. Proporciona condicions alternatives per comprovar quan la condició inicial si és falsa.
ús S'utilitza per a la condició inicial. S'utilitza després de la condició si inicial per comprovar condicions addicionals.
nombre de blocs Només pot tenir un bloc si. Pot tenir diversos blocs elif, però només un altre bloc (opcional).
Execució Executa el bloc de codi associat a la instrucció if si la condició és certa. Si la condició és falsa, s'executa el bloc else (si està present) (opcional). Comprova cada condició elif en ordre. Si una condició elif és certa, s'executa el bloc de codi corresponent i l'script surt de tot el bloc condicional. Si cap de les condicions elif és certa, s'executa el bloc else (si està present).
Estructures imbricades Es pot imbricar dins d'altres blocs if, elif o else. No es pot niuar dins d'un altre bloc elif, però es pot utilitzar dins d'un bloc if o else.

Entenem-ho amb un exemple.

#!/bin/bash
nombre=5
if [ $número -gt 10 ]; aleshores
echo $número és més gran que 10
altra cosa
echo $número no és més gran que 10
ser
eco ———
if [ $número -gt 10 ]; aleshores
echo $número és més gran que 10
elif [ $número -eq 10 ]; aleshores
echo $número és igual a 10
altra cosa
echo $número és inferior a 10
ser

Explicació:

En aquest exemple, el primer bloc if comprova si el nombre és més gran que 10. Si no, imprimeix un missatge que indica que el nombre no és superior a 10. El segon bloc amb declaracions elif verifica múltiples condicions seqüencialment fins que una d'elles és certa. En aquest cas, com que el valor del nombre és 5, la sortida serà:

if_elif diferència

if_elif diferència

23) Com s'utilitza un bucle while per executar ordres repetidament?

Un bucle while s'utilitza en els scripts d'intèrpret d'ordres per executar repetidament un conjunt d'ordres sempre que una condició especificada sigui certa. El bucle continua executant les ordres fins que la condició esdevé falsa.

Aquí teniu la sintaxi bàsica d'un bucle while:

mentre que [condició]; fer
# Ordres a executar
fet

Explicació:

  1. El bucle `while` comença amb la paraula clau `while` seguida d'una condició entre claudàtors `[ ]`.
  2. El cos del bucle, que conté les ordres que s'han d'executar, es troba dins de les paraules clau 'do' i 'fet'.
  3. El bucle comprova primer la condició. Si la condició és certa, s'executen les ordres dins del cos del bucle. Un cop s'executa el cos del bucle, la condició es torna a comprovar i el procés es repeteix fins que la condició esdevé falsa.

Exemple: Si volem imprimir números de l'1 al 5

#!/bin/bash
comptador=1
mentre que [ $comptador -le 5 ]; fer
echo Number: $comptador
comptador=$((comptador + 1))
fet

Explicació:

  • La variable del comptador s'estableix a 1.
  • El bucle while comprova si el valor del comptador és menor o igual a 5. Mentre aquesta condició sigui certa, el bucle continua executant-se.
  • Dins del bucle, el valor actual del comptador s'imprimeix mitjançant echo.
  • El comptador s'incrementa en 1 mitjançant l'expressió $((comptador + 1)).
bucle while

bucle while

24) Creeu un script d'intèrpret d'ordres que trobi i llista tots els fitxers buits d'un directori.

Script de Shell que podeu utilitzar per trobar i llistar tots els fitxers buits d'un directori mitjançant les ordres `find' i `stat`:

#!/bin/bash
directori=$1″
if [ -z $directori ]; aleshores
echo Ús: $0
sortida 1
ser

si [ ! -d $directori ]; aleshores
echo Error: '$directory' no és un directori vàlid.
sortida 1
ser
echo Fitxers buits al directori $:
cerca $directory -type f -empty

Explicació:

  1. ` #!/bin/bash `: Això s'anomena shebang i diu al sistema operatiu que utilitzi l'intèrpret d'ordres Bash per interpretar i executar l'script.
  2. ` directori=$1″ `: Aquesta línia assigna el primer argument de la línia d'ordres (indicat per $1) a la variable ` directori `.
  3. ` if [ -z $directori ]; aleshores `: Aquesta línia comença una instrucció if que verifica si el ` directori ` La variable està buida (-z prova una cadena buida).
  4. ` echo Ús: $0 `: Si el directori està buit, aquesta línia imprimeix un missatge d'ús, on ` $0 ` representa el nom del guió.
  5. ` sortida 1 `: aquesta línia surt de l'script amb un codi de sortida de ` 1 `, que indica un error.
  6. ` ser `: aquesta línia marca el final del ` si ` declaració.
  7. ` si [ ! -d $directori ]; aleshores `: S'inicia una altra instrucció if per comprovar si el directori proporcionat existeix (` -d ` proves per a un directori).
  8. ` echo Error: '$directory' no és un directori vàlid. `: Si el directori proporcionat no existeix, aquesta línia imprimeix un missatge d'error.
  9. ` sortida 1 `: surt de l'script amb un codi de sortida de ` 1 `.
  10. ` ser `: Marca el final del segon ` si' declaració.
  11. ` echo Fitxers buits al directori $: `: Si tot és vàlid fins ara, aquesta línia imprimeix un missatge que indica que l'script enumerarà els fitxers buits al directori especificat.
  12. ` cerca $directory -type f -empty `: aquesta línia utilitza el ` trobar ` ordre per cercar fitxers buits (` -buit `) de tipus fitxers normals (` -tipus f `) al directori especificat. A continuació, enumera aquests fitxers buits.
Trobar fitxers buits

Trobar fitxers buits

Nota : Hem de proporcionar un directori com a argument en executar l'script. Aquí hem utilitzat la ruta del directori actual home/jayeshkumar/

25) Quin és l'objectiu de l'ordre de lectura en els scripts d'intèrpret d'ordres?

L'ordre de lectura dels scripts d'intèrpret d'ordres permet que l'script us demani informació. És com quan un ordinador et fa una pregunta i espera la teva resposta. Això és útil per a scripts que necessiten que escriviu alguna cosa o per quan l'script necessita treballar amb informació dels fitxers. L'ordre de lectura ajuda a aturar l'script i esperar el que escriviu, i després pot utilitzar aquesta informació per fer més coses a l'script.

Sintaxi de l'ordre de lectura:

read variable_name>

Exemple : Si volem prendre el nom com a entrada de l'usuari per imprimir-lo.

#!/bin/bash
echo Introduïu el vostre nom:
llegir el nom
echo Hola, $name!

453

llegir nom

En resum, l'ordre read s'utilitza per capturar l'entrada de l'usuari o les dades dels fitxers dins dels scripts d'intèrpret d'ordres, fent que els scripts siguin més interactius i versàtils.

26) Escriu un script d'intèrpret d'ordres que converteixi tots els noms de fitxers d'un directori a minúscules.

Aquí hi ha un script d'intèrpret d'ordres que converteix tots els noms de fitxer d'un directori a minúscules.

#!/bin/bash
directori=$1″
if [ -z $directori ]; aleshores
echo Ús: $0
sortida 1
ser

si [ ! -d $directori ]; aleshores

echo Error: '$directory' no és un directori vàlid.
sortida 1
ser

cd $directori || sortida 1

per al fitxer en *; fer
if [ -f $fitxer ]; aleshores
nounom=$(eco $fitxer | tr ‘A-Z’ ‘a-z’)
[ $fitxer != $nom nou ] && mv $fitxer $nom nou
ser
fet

Explicació:

  1. #!/bin/bash : Aquest és el shebang, que especifica que l'script s'ha d'interpretar mitjançant l'intèrpret d'ordres Bash.
  2. directori=$1″ : Aquesta línia assigna el primer argument de la línia d'ordres al directori de variables.
  3. if [ -z $directori ]; aleshores : Aquesta línia comprova si la variable de directori està buida (no es proporciona cap argument en executar l'script).
  4. echo Ús: $0 : Si el directori està buit, aquesta línia imprimeix un missatge d'ús amb el nom de l'script ($0).
  5. sortida 1 : Aquesta línia surt de l'script amb un codi de sortida 1, que indica que s'ha produït un error.
  6. f i: Això marca el final de la primera declaració if.
  7. si [ ! -d $directori]; aleshores : Aquesta línia comprova si el directori especificat no existeix (-d prova per a un directori).
  8. echo Error: '$directory' no és un directori vàlid. : Si el directori especificat no existeix, aquesta línia imprimeix un missatge d'error.
  9. sortida 1 : surt de l'script amb un codi de sortida d'1.
  10. ser : Marca el final de la segona declaració if.
  11. cd $directori || sortida 1 : Canvia el directori de treball actual al directori especificat. Si el canvi de directori falla (p. ex., directori inexistent), l'script surt amb un codi d'error.
  12. per al fitxer en *; fer: jo per al fitxer en *; fer: inicia un bucle que itera sobre tots els elements del directori actual (* coincideix amb tots els noms de fitxer).
  13. if [ -f $fitxer ]; aleshores : Comprova si l'element d'iteració del bucle actual és un fitxer normal (-f prova per a un fitxer normal).
  14. nounom=$(eco $fitxer | tr ‘A-Z’ ‘a-z’) : Converteix el nom del fitxer actual ($fitxer) a minúscules mitjançant l'ordre tr i emmagatzema el resultat a la variable newname.
  15. [ $fitxer != $nom nou ] && mv $fitxer $nom nou : compara el nom del fitxer original amb el nou nom del fitxer en minúscules. Si són diferents, canvia el nom del fitxer mitjançant l'ordre mv.
  16. ser : Marca el final de la declaració si interna.
  17. fet : Marca el final del bucle.

454

Nota : Hem de proporcionar un directori com a argument en executar l'script. Aquí hem utilitzat la ruta del directori actual home/jayeshkumar/test

27) Com podeu utilitzar operacions aritmètiques dins d'un script de shell?

Les operacions aritmètiques es poden realitzar dins d'un script de shell utilitzant diversos mètodes integrats. L'intèrpret d'ordres proporciona mecanismes per a càlculs aritmètics simples mitjançant l'expansió aritmètica Com:

  1. Expansió aritmètica ($((…)))
  2. Utilitzant l'ordre expr
  3. Utilitzant el comandament let

Aquí teniu el nostre script Shell que explica els tres mètodes per a operacions aritmètiques.

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

#Expansió aritmètica ($((…)))

resultat=$((núm1 + núm2))
echo Suma: $resultat

#Usant l'ordre expr

suma=$(expr $núm1 + $núm2)
echo Suma: $sum

#Usant el comandament let

siguem suma = num1 + num2
echo Suma: $sum

Explicació:

  1. `#!/bin/bash` : Aquest és el shebang, que especifica que l'script s'ha d'interpretar mitjançant l'intèrpret d'ordres Bash.
  2. `núm1=10` i ` num2=5` : Aquestes línies assignen els valors 10 i 5 a les variables ` num1 ` i ` num2 `, respectivament.
  3. `#Expansió aritmètica ($((…)))` : Aquest és un comentari que indica l'inici de la secció que demostra l'expansió aritmètica.
  4. `resultat=$((núm1 + núm2))` : Aquesta línia utilitza l'expansió aritmètica per calcular la suma de ` núm1 ` i ` num2 ` i emmagatzema el resultat al fitxer ` resultat ` variable.
  5. `echo Sum: $resultat` : Aquesta línia imprimeix la suma calculada utilitzant el valor emmagatzemat al ` resultat ` variable.
  6. `#Usant l'ordre expr` : Aquest és un comentari que indica l'inici de la secció que demostra l'ús del ` expr ` ordre per a operacions aritmètiques.
  7. `suma=$(expr $núm1 + $núm2)` : Aquesta línia utilitza el ` expr ` ordre per calcular la suma de ` núm1 ` i ` num2 ` i emmagatzema el resultat al fitxer ` suma ` variable. Tingueu en compte que el ` expr L'ordre ` requereix espais al voltant dels operadors.
  8. `echo Sum: $sum` : Aquesta línia imprimeix la suma calculada utilitzant el valor emmagatzemat al ` suma ` variable.
  9. `#Usant l'ordre let` : Aquest és un comentari que indica l'inici de la secció que demostra l'ús del ` deixar ` ordre per a operacions aritmètiques.
  10. `deixar suma = num1 + num2″` : Aquesta línia utilitza el ` deixar ` ordre per calcular la suma de ` núm1 ` i ` num2 ` i assigna el resultat a ` suma ` variable. El ` deixar L'ordre ` no requereix espais al voltant dels operadors.
  11. `echo Sum: $sum` : Aquesta línia imprimeix la suma calculada utilitzant el valor emmagatzemat al ` suma ` variable.
aritmètica

aritmètica

28) Creeu un script que comprovi si es pot accedir a un host de xarxa.

Aquí hi ha un script d'intèrpret d'ordres senzill que utilitza l'ordre ping per comprovar si es pot accedir a un host de xarxa:

#!/bin/bash
amfitrió=$1″
if [ -z $amfitrió ]; aleshores
echo Ús: $0
sortida 1
ser
ping -c 4 $host

si [ $? -eq 0]; aleshores
echo $host és accessible.
altra cosa
echo $host no és accessible.
ser

Explicació:

  1. Pren un nom d'amfitrió o una adreça IP com a argument i comprova si es proporciona l'argument.
  2. Si no es proporciona cap argument, mostra un missatge d'ús i surt.
  3. Utilitza l'ordre ping amb l'opció -c 4 per enviar quatre sol·licituds d'eco ICMP a l'amfitrió especificat.
  4. Després d'executar l'ordre ping, comprova l'estat de sortida ($?). Si l'estat de sortida és 0, vol dir que l'amfitrió és accessible i l'script imprimeix un missatge d'èxit. En cas contrari, imprimeix un missatge d'error.

456

Nota : Hem de proporcionar un nom d'amfitrió com a argument quan executem l'script. Aquí hem utilitzat google.com

29) Escriu un script de Shell per trobar l'element més gran d'una matriu:

Aquí hi ha un script de shell per trobar l'element més gran d'una matriu.

#!/bin/bash
# Declarar una matriu
matriu=(3 56 24 89 67)

# Inicialitzeu una variable per emmagatzemar el valor màxim, començant pel primer element

max=${array[0]}

# Iterar per la matriu

per num a ${array[@]}; fer

# Compara cada element amb el màxim actual

si ((número> màxim)); aleshores
màxim=$núm
ser
fet

# Imprimeix el valor màxim

echo L'element màxim de la matriu és: $max

Explicació:

  1. ` #!/bin/bash `: La línia shebang especifica que l'script s'ha d'interpretar mitjançant l'intèrpret d'ordres Bash.
  2. ` matriu=(3 56 24 89 67) `: La matriu es declara i s'inicia amb valors.
  3. ` max=${array[0]} `: `max` s'inicialitza amb el primer element de la matriu.
  4. ` per num a ${array[@]}; fer `: Un bucle `for` s'utilitza per iterar pels elements de la matriu.
  5. ` si ((número> màxim)); aleshores `: Una instrucció `if` verifica si l'element actual `num` és més gran que el màxim actual `max`.
  6. ` max=$num`: Si`núm ` és més gran que `max`, `max` s'actualitza amb el valor de num.
  7. ` fet `: El bucle `for` està tancat.
  8. ` echo L'element màxim de la matriu és: $max `: Finalment, l'script imprimeix el valor màxim trobat a la matriu.
461

nombre més gran

30) Escriu un guió per calcular la suma dels elements d'una matriu.

#!/bin/bash

# Declarar una matriu

matriu=(1 65 22 19 94)

# Inicialitzar una variable per emmagatzemar la suma

suma=0

# Iterar per la matriu i afegir cada element a la suma

per num a ${array[@]}; fer
am=$((am + am))
fet

# Imprimeix la suma

echo La suma d'elements de la matriu és: $sum

Explicació:

` #!/bin/bash `: La línia shebang especifica que l'script s'ha d'interpretar mitjançant l'intèrpret d'ordres Bash.

` matriu=(1 65 22 19 94) `: La matriu es declara i s'inicia amb valors.

` suma=0 `: ` suma ` s'inicia a zero per contenir la suma d'elements.

` per num a ${array[@]}; fer `: A` per ` bucle s'utilitza per iterar a través dels elements de la matriu.

` am=$((am + am)) `: Dins del bucle, cada element ` en una ` s'afegeix al ` suma ` variable.

` fet `: El ` per ` el bucle està tancat.

`echo La suma d'elements de la matriu és: $sum`: Finalment, l'script imprimeix la suma de tots els elements de la matriu.

462

Suma d'elements

Més informació sobre els scripts de Shell

Conclusió

Tots els geeks sabem que el shell script és molt útil per augmentar la productivitat del treball i també per estalviar temps. Per tant, en aquest article hem tractat 30 exemples de scripts d'intèrpret d'ordres molt útils i la majoria d'estafadors . Esperem que aquesta guia completa sobre l'exemple de shell script us ajudi a entendre tot sobre els shell scripts.




sortida 1
ser

si [ ! -d $directori ]; aleshores

echo Error: '$directory' no és un directori vàlid.
sortida 1
ser

cd $directori || sortida 1

per al fitxer en *; fer
if [ -f $fitxer ]; aleshores
nounom=$(eco $fitxer | tr ‘A-Z’ ‘a-z’)
[ $fitxer != $nom nou ] && mv $fitxer $nom nou
ser
fet

Explicació:

  1. #!/bin/bash : Aquest és el shebang, que especifica que l'script s'ha d'interpretar mitjançant l'intèrpret d'ordres Bash.
  2. directori=″ : Aquesta línia assigna el primer argument de la línia d'ordres al directori de variables.
  3. if [ -z $directori ]; aleshores : Aquesta línia comprova si la variable de directori està buida (no es proporciona cap argument en executar l'script).
  4. echo Ús:

    Per a totes les distribucions de Linux, l'script shell és com una vareta màgica que automatitza el procés, estalvia temps als usuaris i augmenta la productivitat. Aquest tutorial de scripting us introduirà als 25 exemples de scripting.

    Però abans de passar al tema de shell scripting Per exemple, entenem l'script d'intèrpret d'ordres i els casos d'ús reals de l'script d'intèrpret d'ordres.

    Què és Shell Script?

    Bé, la closca és una CLI ( intèrpret de línia d'ordres ), que s'executa en una finestra de text on els usuaris poden gestionar i executar ordres de shell. D'altra banda, el procés d'escriure un conjunt d'ordres que s'executaran en un sistema Linux Un fitxer que inclou aquestes instruccions s'anomena script bash.

    Usos dels scripts de Shell

    A continuació es mostren alguns usos habituals de Shell Script:

    • Automatització de tasques – Es pot utilitzar per automatitzar tasques repetitives com ara còpies de seguretat habituals i tasques d'instal·lació de programari.
    • Personalització - Es pot utilitzar scripts d'intèrpret d'ordres per dissenyar el seu entorn de línia d'ordres i realitzar fàcilment la seva tasca segons les necessitats.
    • Gestió de fitxers - Els scripts d'intèrpret d'ordres també es poden utilitzar per gestionar i manipular fitxers i directoris, com ara moure, copiar, canviar el nom o suprimir fitxers.

    Exemples de script de Shell a Linux

    1) Què indica el shebang (#!) al començament d'un script de shell?

    El shebang (#!) al principi d'un script indica l'intèrpret que s'ha d'utilitzar per executar l'script. Indica al sistema quin shell o intèrpret ha d'interpretar les ordres de l'script.

    Per exemple: Suposem que tenim un script anomenat myscript.sh escrit a l'intèrpret d'ordres Bash:

    shebang

    shebang

    En aquest exemple:

    • El #!/bin/bash al començament de l'script indica que l'script s'ha d'interpretar mitjançant l'intèrpret d'ordres Bash.
    • Les ordres d'eco s'utilitzen per imprimir missatges al terminal.

    2) Com executeu un script de shell des de la línia d'ordres?

    Per executar un script de shell des de la línia d'ordres, hem de seguir aquests passos:

    • Assegureu-vos que el fitxer d'script tingui permisos executables mitjançant l' comanda chmod :
    chmod +x myscript.sh>
    • Executeu l'script utilitzant el seu nom de fitxer:
    ./myscript.sh>

    Aquí has ​​de substituir myscrtipt.sh amb el nom d'escriptura anterior.

    3) Escriviu un script d'intèrpret d'ordres que imprimeixi techcodeview.com al terminal.

    Creeu un nom d'script `myscript.sh` (estem utilitzant ` perquè ` editor, podeu triar qualsevol editor)

    vim myscript.sh>

    #!/bin/bash
    # Aquest script imprimeix techcodeview.com al terminal
    echo techcodeview.com

    Nom d'impressió

    Nom d'impressió

    Fem que el nostre script sigui executable utilitzant `chmod +x` i després executem amb `./myscipt.sh` i obtenim la nostra sortida desitjada techcodeview.com.

    4) Expliqueu el propòsit de l'ordre echo en els scripts de shell.

    El comanda d'eco s'utilitza per mostrar text o variables al terminal. S'utilitza habitualment per imprimir missatges, valors variables i generar resultats del programa.

    434

    comanda d'eco

    En aquest exemple hem executat `echo` directament al terminal, ja que funciona igual dins de l'script de shell.

    5) Com es pot assignar un valor a una variable en un script de shell?

    Les variables s'assignen valors mitjançant l'operador d'assignació =.

    Per exemple:

    #!/bin/bash
    # Assignació d'un valor a una variable
    nom=Jayesh
    edat = 21
    echo $nom $edat

    Explicació:

    • A la variable de nom se li assigna el valor Jayesh.
    • A la variable edat se li assigna el valor 21.
    • echo s'utilitza per imprimir i `$name` `$age` s'utilitza per cridar el valor emmagatzemat a les variables.

    435

    6) Escriu un script de shell que prengui el nom d'un usuari com a entrada i el saludi.

    Creeu un nom d'script `example.sh`.

    #!/bin/bash
    # Demaneu el seu nom a l'usuari
    echo Com et dius?
    llegir el nom
    # Saludeu l'usuari
    echo Hola, $name! Encantat de conèixer-te.

    Explicació:

    • #!/bin/bash: aquesta és la línia shebang. Indica al sistema que utilitzi l'intèrpret Bash per executar l'script.
    • # Demaneu el seu nom a l'usuari: Això és un comentari. Proporciona context sobre el codi proper. Els comentaris són ignorats per l'intèrpret.
    • echo Com et dius?: L'ordre echo s'utilitza per mostrar el text entre cometes dobles al terminal.
    • read name: l'ordre read espera que l'usuari introdueixi text i l'emmagatzema al nom de la variable.
    • echo Hola, $name! Encantat de conèixer-te.: Aquesta línia utilitza l'ordre echo per imprimir un missatge de salutació que inclou el valor de la variable de nom, que es va recopilar de l'entrada de l'usuari.

    436

    7) Com s'afegeixen comentaris a un script de shell?

    Comentaris en shell script s'utilitzen per proporcionar explicacions o context al codi. L'intèrpret els ignora i només estan pensats per als humans que llegeixen el guió. Podeu afegir comentaris amb el símbol #.

    #!/bin/bash
    # Aquest és un comentari que explica el propòsit del guió
    eco gfg

    8) Creeu un script d'intèrpret d'ordres que comprovi si existeix un fitxer al directori actual.

    Aquí hi ha un script que verifica si un fitxer anomenat example.txt existeix al directori actual:

    #!/bin/bash
    fitxer=exemple.txt
    # Comproveu si el fitxer existeix
    if [ -e $fitxer ]; aleshores
    echo El fitxer existeix: $fitxer
    altra cosa
    echo No s'ha trobat el fitxer: $fitxer
    ser

    Explicació:

    1. #!/bin/bash: Aquesta és la línia shebang que especifica l'intèrpret (/bin/bash) que s'utilitzarà per executar l'script.
    2. file=example.txt: aquesta línia defineix el fitxer variable i li assigna el valor example.txt. Podeu substituir-lo pel nom del fitxer que voleu comprovar.
    3. if [ -e $fitxer ]; then: Aquesta línia comença una sentència if. La condició [ -e $fitxer ] comprova si el fitxer especificat pel valor de la variable de fitxer existeix. El senyalador -e s'utilitza per comprovar l'existència de fitxers.
    4. echo El fitxer existeix: $fitxer: si la condició és certa (és a dir, el fitxer existeix), aquesta línia imprimeix un missatge que indica que el fitxer existeix, juntament amb el nom del fitxer.
    5. else: si la condició és falsa (és a dir, el fitxer no existeix), l'script executa el codi a la branca else.
    6. echo No s'ha trobat el fitxer: $fitxer: aquesta línia imprimeix un missatge d'error que indica que no s'ha trobat el fitxer especificat, juntament amb el nom del fitxer.
    7. fi: Aquesta línia marca el final de la instrucció if.
    Trobar fitxer

    Trobar fitxer

    9) Quina diferència hi ha entre cometes simples (‘) i cometes dobles () en els scripts de shell?

    Les cometes simples (‘) i les cometes dobles () s'utilitzen per incloure cadenes en els scripts d'intèrpret d'ordres, però tenen comportaments diferents:

    • Cometes simples: tot el que hi ha entre cometes simples es tracta com una cadena literal. Els noms de variables i la majoria de caràcters especials no s'amplien.
    • Cometes dobles: s'amplien les variables i certs caràcters especials dins de cometes dobles. Els continguts estan subjectes a substitució de variables i substitució d'ordres.

    #!/bin/bash

    abcd=Hola
    echo ‘$abcd’ # Sortida: $abcd
    echo $abcd # Sortida: Hola

    10) Com podeu utilitzar arguments de línia d'ordres en un script de shell?

    Arguments de la línia d'ordres són valors proporcionats a un script quan s'executa. S'hi pot accedir dins de l'script mitjançant variables especials com $1, $2, etc., on $1 representa el primer argument, $2 representa el segon argument, etc.

    Per exemple: Si el nostre nom d'script a `example.sh`

    #!/bin/bash

    echo Nom de l'script: $0
    echo Primer argument: $1
    echo Segon argument: $2

    Si executem l'script amb `.example.sh hello_1 hello_2`, sortirà:

    cli arguments

    cli arguments

    11) Com s'utilitza el bucle for per recórrer una llista de valors?

    Creeu un nom d'script `example.sh`.

    #!/bin/bash

    fruites=(data de cirera poma i plàtan)
    per a fruites a ${fruits[@]}; fer
    echo Fruita actual: $fruit
    fet

    Explicació:

    La línia `fruits=` crea una matriu anomenada fruites amb quatre elements: poma, plàtan, cirera i dàtil.

    • per a fruites a ${fruits[@]}; do: aquesta línia comença un bucle for. Aquí teniu el significat de cada part:
    • for fruit: declara una variable de bucle anomenada fruit. En cada iteració del bucle, fruit mantindrà el valor de l'element actual de la matriu de fruites.
    • ${fruits[@]}: aquesta és una expansió de matriu que pren tots els elements de la matriu de fruites. La sintaxi ${…} garanteix que cada element es tracti com un element separat.
    • do: aquesta paraula clau marca l'inici del cos del bucle.
    • echo Fruit actual: $fruit: Dins del bucle, aquesta línia utilitza l'ordre echo per mostrar el valor actual de la variable de bucle fruit. Imprimeix un missatge com ara Fruit actual: poma per a cada fruita de la matriu.
    • fet: aquesta paraula clau marca el final del cos del bucle. Indica a l'script que el bucle ha acabat.
    per bucle

    per bucle

    12) Escriu un script d'intèrpret d'ordres que calculi la suma dels nombres enters d'1 a N mitjançant un bucle.

    Creeu un nom d'script `example.sh`.

    #!/bin/bash

    echo Introduïu un número (N):
    llegir N
    suma=0
    per (( i=1; i<=$N; i++ )); fer
    suma=$((suma + i))
    fet
    echo La suma dels nombres enters d'1 a $N és: $sum

    Explicació:
    L'script comença demanant-vos que introduïu un número (N) mitjançant la lectura. Aquest número determinarà quantes vegades s'executa el bucle.

    1. La variable suma s'inicialitza a 0. Aquesta variable farà un seguiment de la suma dels nombres enters.
    2. El bucle for comença amb for (( i=1; i<=$N; i++ )). Aquesta estructura de bucle s'utilitza per repetir un conjunt d'accions un nombre determinat de vegades, en aquest cas, des d'1 fins al valor de N.
    3. Dins del bucle, passen aquestes coses:
      • i=1 estableix la variable de bucle i a 1 al començament de cada iteració.
      • La condició de bucle i<=$N comprova si i encara és menor o igual que el nombre donat N.
      • Si la condició és certa, el cos del bucle s'executa.
      • sum=$((suma + i)) calcula el nou valor de suma afegint-hi el valor actual de i. Això suma els nombres enters de 1 al valor i actual.
    4. Després de cada iteració, i++ augmenta el valor de i en 1.
    5. El bucle continua funcionant fins que la condició i<=$N esdevé falsa (quan i és més gran que N).
    6. Un cop finalitza el bucle, l'script mostra la suma dels nombres enters des de l'1 fins al número introduït N.

    439

    13) Creeu un script que cerqui una paraula específica en un fitxer i compta les seves ocurrències.

    Creeu un nom d'script `word_count.sh`

    #!/bin/bash

    echo Introduïu la paraula per cercar:
    llegir paraula_destinació
    echo Introduïu el nom del fitxer:
    llegir el nom del fitxer
    count=$(grep -o -w $paraula_objectiu $nomfitxer | wc -l)
    echo La paraula '$target_word' apareix $count times a '$filename'.

    Explicació:

    • echo Introduïu la paraula a cercar:: Aquesta línia mostra un missatge demanant a l'usuari que introdueixi una paraula que vol cercar en un fitxer.
    • read target_word: Aquesta línia llegeix l'entrada proporcionada per l'usuari i l'emmagatzema en una variable anomenada target_word.
    • echo Introduïu el nom del fitxer:: Aquesta línia mostra un missatge demanant a l'usuari que introdueixi el nom del fitxer en què vol cercar.
    • llegir nom de fitxer: aquesta línia llegeix l'entrada proporcionada per l'usuari i l'emmagatzema en una variable anomenada nom de fitxer.
    • count=$(grep -o -w $target_word $filename | wc -l): Aquesta línia fa el treball principal de l'script. Anem a desglossar-ho més:
      • grep -o -w $target_word $filename: aquesta part de l'ordre cerca les ocurrències de la paraula_destinació al nom de fitxer especificat. Les opcions -o i -w asseguren que només es compten les coincidències de paraules senceres.
      • |: Aquesta és una canalització, que pren la sortida de l'ordre anterior i l'envia com a entrada a l'ordre següent.
      • wc -l: aquesta part de l'ordre utilitza l'ordre wc per comptar el nombre de línies de l'entrada. L'opció -l compta específicament les línies.
      • L'ordre sencera calcula el recompte d'ocurrències de la paraula_destinació al fitxer i assigna aquest recompte a la variable count

    441

    14) Expliqueu les diferències entre la sortida estàndard (stdout) i l'error estàndard (stderr).

    La diferència principal entre la sortida estàndard (stdout) i l'error estàndard (stderr) és la següent:

    • Sortida estàndard (stdout): Aquest és el flux de sortida predeterminat on va la sortida normal d'una ordre. Es mostra al terminal de manera predeterminada. Podeu redirigir-lo a un fitxer mitjançant>.
    • Error estàndard (stderr): Aquest és el flux de sortida dels missatges d'error i advertències. També es mostra al terminal de manera predeterminada. Podeu redirigir-lo a un fitxer mitjançant 2>.

    15) Expliqueu el concepte de sentències condicionals en shell scripting.

    Declaracions condicionals en scripts de shell ens permeten prendre decisions i controlar el flux del nostre guió en funció de determinades condicions. Permeten que el nostre script executi diferents conjunts d'ordres depenent de si una condició concreta és certa o falsa. Les sentències condicionals primàries en els scripts d'intèrpret d'ordres són la sentència if, la sentència elif (opcional) i la sentència else (opcional).

    A continuació, es mostra l'estructura bàsica d'una instrucció condicional en scripts de shell:

    si [condició]; aleshores
    # Ordres per executar si la condició és certa
    elif [una altra_condició]; aleshores
    # Ordres per executar si una altra_condició és certa (opcional)
    altra cosa
    # Ordres per executar si cap de les condicions és certa (opcional)
    ser

    Explicació:

    • [condició] = Ordre que avalua la condició i retorna un estat de sortida veritable (0) o fals (no zero).
    • then = És una paraula clau que indica que les ordres que la segueixen s'executaran si la condició s'avalua com a vertadera.
    • elif = (abreviatura de else if) És una secció que ens permet especificar condicions addicionals per comprovar.
    • else = és una secció que conté ordres que s'executaran si cap de les condicions és certa.
    • fi = És una paraula clau que marca el final del bloc condicional.

    16) Com llegiu les línies d'un fitxer dins d'un script de shell?

    A llegir línies des d'un fitxer dins d'un script d'intèrpret d'ordres, podem utilitzar diversos mètodes, però un enfocament comú és utilitzar un bucle while en combinació amb l'ordre read. Així és com ho podem fer:

    #!/bin/bash
    fitxer=/home/jayeshkumar/jayesh.txt
    # Comproveu si el fitxer existeix
    if [ -e $fitxer ]; aleshores
    mentre que IFS= llegeix la línia -r; fer
    echo Line read: $line
    # Afegiu aquí la vostra lògica de processament
    fet <$fitxer
    altra cosa
    echo No s'ha trobat el fitxer: $fitxer
    ser

    Explicació:

    1. #!/bin/bash: Aquesta és la línia shebang que especifica l'intèrpret (/bin/bash) que s'utilitzarà per executar l'script.
    2. file=/home/jayeshkumar/jayesh.txt: aquesta línia defineix el fitxer variable i assigna el camí complet al fitxer jayesh.txt al directori /home/jayeshkumar. Canvieu aquest camí perquè coincideixi amb el camí real del fitxer que voleu llegir.
    3. if [ -e $fitxer ]; then: Aquesta línia comença una sentència if. Comprova si el fitxer especificat per la variable $file existeix. El senyalador -e comprova l'existència del fitxer.
    4. mentre que IFS= llegeix la línia -r; do: aquesta línia inicia un bucle while que llegeix les línies del fitxer.
      • IFS=: l'IFS (Internal Field Separator) s'estableix en un valor buit per preservar els espais inicials i finals.
      • read -r line: llegeix la línia actual del fitxer i l'emmagatzema a la línia variable.
    5. echo Line read: $line: Aquesta línia imprimeix el contingut de la línia que s'ha llegit del fitxer. La variable $line conté el contingut de la línia actual.
    6. # Afegiu la vostra lògica de processament aquí: aquest és un comentari de marcador de posició on podeu afegir la vostra pròpia lògica per processar cada línia. Per exemple, podeu analitzar la línia, extreure informació o realitzar accions específiques basades en el contingut.
    7. done <$file: Això marca el final del bucle while. El < $file redirigeix ​​el contingut del fitxer per ser llegit pel bucle.
    8. else: si el fitxer no existeix (la condició de la instrucció if és falsa), l'script executa el codi a la branca else.
    9. echo No s'ha trobat el fitxer: $fitxer: aquesta línia imprimeix un missatge d'error que indica que no s'ha trobat el fitxer especificat.
    10. fi: Aquesta línia marca el final de la instrucció if.
    fitxer de lectura

    fitxer de lectura

    Aquí hem utilitzat ` pwd ` comanda per obtenir la ruta del directori actual.

    17) Escriu una funció en un script de shell que calculi el factorial d'un nombre donat.

    Aquí teniu el guió quecalcula el factoriald'un nombre donat.

    #!/bin/bash
    # Definiu una funció per calcular factorial
    calcula_factorial() {
    num=$1
    fet = 1
    per ((i=1; i<=núm; i++)); fer
    fet=$((fet * i))
    fet
    echo $fet
    }
    # Demaneu a l'usuari que introdueixi un número
    echo Introduïu un número:
    llegir input_num
    # Truqueu a la funció calculate_factorial amb el número d'entrada
    factor_result=$(calcular_factorial $núm_entrada)
    # Mostra el resultat factorial
    echo El factor de $núm_entrada és: $resultat_factorial

    Explicació:

    1. L'script comença amb la línia shebang #!/bin/bash per especificar l'intèrpret.
    2. calculate_factorial() es defineix com una funció. Es necessita un argument, num, que és el nombre pel qual s'ha de calcular el factorial.
    3. Dins de la funció, fact s'inicialitza a 1. Aquesta variable emmagatzemarà el resultat factorial.
    4. El bucle for itera des de l'1 fins al nombre donat (num). En cada iteració, multiplica el valor actual de fet per l'índex de bucle i.
    5. Un cop finalitzat el bucle, la variable de fet conté el factorial calculat.
    6. L'script demana a l'usuari que introdueixi un número mitjançant la lectura.
    7. La funció calculate_factorial es crida amb el número proporcionat per l'usuari i el resultat s'emmagatzema a la variable factorial_result.
    8. Finalment, l'script mostra el resultat factorial calculat.
    Factorial

    Factorial

    18) Com gestioneu senyals com Ctrl + C en un script de shell?

    En un script d'intèrpret d'ordres, podeu gestionar senyals com Ctrl+C (també conegut com SIGINT) mitjançant l'ordre trap. Ctrl+C genera un senyal SIGINT quan l'usuari el prem per interrompre l'script o programa en execució. Mitjançant l'ordre trap, podeu especificar les accions que cal dur a terme quan es rep un senyal concret. A continuació s'explica com gestioneu senyals com Ctrl+C en un script de shell:

    #!/bin/bash
    netejar() {
    echo Script interromput. S'està fent la neteja...
    # Afegeix aquí les teves accions de neteja
    sortida 1
    }
    # Configureu una trampa per trucar a la funció de neteja quan es rebi Ctrl+C (SIGINT).
    neteja de paranys SIGINT
    # La resta del vostre guió
    echo Corrent...
    dormir 10
    eco Acabat.

    El maneig dels senyals és important per fer que els scripts siguin robusts i assegurar-se que gestionen les interrupcions inesperades amb gràcia. Podeu personalitzar la funció de neteja perquè s'ajusti a les vostres necessitats específiques, com ara tancar fitxers, aturar processos o registrar informació abans que surti l'script.

    Explicació:

    1. #!/bin/bash: aquesta línia shebang especifica l'intèrpret que s'utilitzarà per executar l'script.
    2. cleanup() { … }: Això defineix una funció anomenada cleanup. Dins d'aquesta funció, podeu incloure qualsevol acció que s'hagi de realitzar quan s'interromp l'script, com ara tancar fitxers, alliberar recursos o realitzar altres tasques de neteja.
    3. trap cleanup SIGINT: l'ordre trap s'utilitza per configurar un controlador de senyal. En aquest cas, especifica que quan es rep el senyal SIGINT (Ctrl+C), s'ha d'executar la funció de neteja.
    4. echo Running..., sleep 10, echo Finished.: Són només ordres d'exemple per simular l'execució d'un script.

    446

    19) Creeu un script que cerqui i elimineu les línies duplicades en un fitxer de text.

    Aquí teniu el nostre guió de Linux en el qual eliminarem les línies duplicades d'un fitxer de text.

    #!/bin/bash
    fitxer_entrada=input.txt
    fitxer_output=output.txt
    ordena $fitxer_entrada | uniq> $fitxer_sortida
    echo Les línies duplicades s'han eliminat correctament.

    Explicació:

    1. L'script comença amb un shebang (#!/bin/bash), que indica que l'script s'ha d'interpretar mitjançant l'intèrpret d'ordres Bash.
    2. La variable input_file s'estableix amb el nom del fitxer d'entrada que conté línies duplicades (canvieu-ho pel nom del fitxer d'entrada real).
    3. La variable output_file s'estableix amb el nom del fitxer de sortida on s'eliminaran els duplicats (canvieu-ho pel nom del fitxer de sortida desitjat).
    4. L'script utilitza l'ordre sort per ordenar les línies del fitxer d'entrada. L'ordenació de les línies garanteix que les línies duplicades s'agrupin.
    5. A continuació, les línies ordenades es passen per l'ordre uniq, que elimina les línies duplicades consecutives. La sortida d'aquest procés es redirigeix ​​al fitxer de sortida.
    6. Després d'eliminar els duplicats, l'script imprimeix un missatge d'èxit.
    eliminació de línies duplicades

    eliminació de línies duplicades

    Aquí, fem servir ` gat ` per mostrar el text dins del fitxer de text.

    20) Escriu un script que generi una contrasenya aleatòria segura.

    Aquí teniu el nostre script per generar una contrasenya aleatòria segura.

    #!/bin/bash
    # Funció per generar una contrasenya aleatòria
    genera_contrasenya() {
    tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
    }
    # Truqueu a la funció i emmagatzemeu la contrasenya generada
    contrasenya=$(genera_contrasenya)
    echo Contrasenya generada: $contrasenya

    Nota: En conseqüència, l'usuari pot canviar la longitud de la contrasenya substituint el número '12'.

    Explicació:

    1. L'script comença amb un shebang (#!/bin/bash), que indica que s'ha d'interpretar mitjançant l'intèrpret d'ordres Bash.
    2. La funció generate_password està definida per generar una contrasenya aleatòria. Així és com funciona:
      • tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
      • fold -w 12 divideix les dades aleatòries filtrades en línies d'amplada de 12 caràcters cadascuna.
      • head -n 1 selecciona la primera línia, donant-nos efectivament una seqüència aleatòria de caràcters de longitud 12.
    3. La variable de contrasenya s'assigna el resultat de cridar la funció generate_password.
    4. Finalment, la contrasenya generada es mostra amb echo.

    448

    21) Escriviu un script de shell que calculi la mida total de tots els fitxers d'un directori.

    Aquí hi ha un script de shell per calcular la mida total de tots els fitxers d'un directori.

    #!/bin/bash
    directori=/camí/al/teu/directori
    total_size=$(du -csh $directori | grep total | awk '{print $1}')
    echo Mida total dels fitxers a $directory: $total_size

    Explicació:

    1. L'script comença amb #!/bin/bash shebang, que indica que s'ha d'interpretar mitjançant l'intèrpret d'ordres Bash.
    2. La variable de directori s'estableix a la ruta del directori per al qual voleu calcular la mida total del fitxer. Substituïu /path/to/your/directory pel camí real.
    3. L'ordre du s'utilitza per estimar l'ús d'espai de fitxers. Les opcions utilitzades són:
      • -c: Produeix un gran total.
      • -s: Mostra només la mida total del directori especificat.
      • -h: mides d'impressió en un format llegible per persones (p. ex., KB, MB, GB).
    4. La sortida de du s'envia a grep total per filtrar la línia que conté la mida total.
    5. awk '{print $1}' s'utilitza per extreure el primer camp (mida total) de la línia.
    6. La mida total calculada s'emmagatzema a la variable total_size.
    7. Finalment, l'script mostra la mida total mitjançant echo.
    Mida total dels fitxers

    Mida total dels fitxers

    Aquí hem utilitzat ` pwd ` per veure la ruta del directori actual.

    22) Expliqueu la diferència entre les declaracions if i elif en els scripts d'intèrpret d'ordres.

    Característica `si`Staiftement Declaració 'elif'.
    Propòsit Expliqueu la diferència entre les declaracions if i elif en els scripts de shell. Proporciona condicions alternatives per comprovar quan la condició inicial si és falsa.
    ús S'utilitza per a la condició inicial. S'utilitza després de la condició si inicial per comprovar condicions addicionals.
    nombre de blocs Només pot tenir un bloc si. Pot tenir diversos blocs elif, però només un altre bloc (opcional).
    Execució Executa el bloc de codi associat a la instrucció if si la condició és certa. Si la condició és falsa, s'executa el bloc else (si està present) (opcional). Comprova cada condició elif en ordre. Si una condició elif és certa, s'executa el bloc de codi corresponent i l'script surt de tot el bloc condicional. Si cap de les condicions elif és certa, s'executa el bloc else (si està present).
    Estructures imbricades Es pot imbricar dins d'altres blocs if, elif o else. No es pot niuar dins d'un altre bloc elif, però es pot utilitzar dins d'un bloc if o else.

    Entenem-ho amb un exemple.

    #!/bin/bash
    nombre=5
    if [ $número -gt 10 ]; aleshores
    echo $número és més gran que 10
    altra cosa
    echo $número no és més gran que 10
    ser
    eco ———
    if [ $número -gt 10 ]; aleshores
    echo $número és més gran que 10
    elif [ $número -eq 10 ]; aleshores
    echo $número és igual a 10
    altra cosa
    echo $número és inferior a 10
    ser

    Explicació:

    En aquest exemple, el primer bloc if comprova si el nombre és més gran que 10. Si no, imprimeix un missatge que indica que el nombre no és superior a 10. El segon bloc amb declaracions elif verifica múltiples condicions seqüencialment fins que una d'elles és certa. En aquest cas, com que el valor del nombre és 5, la sortida serà:

    if_elif diferència

    if_elif diferència

    23) Com s'utilitza un bucle while per executar ordres repetidament?

    Un bucle while s'utilitza en els scripts d'intèrpret d'ordres per executar repetidament un conjunt d'ordres sempre que una condició especificada sigui certa. El bucle continua executant les ordres fins que la condició esdevé falsa.

    Aquí teniu la sintaxi bàsica d'un bucle while:

    mentre que [condició]; fer
    # Ordres a executar
    fet

    Explicació:

    1. El bucle `while` comença amb la paraula clau `while` seguida d'una condició entre claudàtors `[ ]`.
    2. El cos del bucle, que conté les ordres que s'han d'executar, es troba dins de les paraules clau 'do' i 'fet'.
    3. El bucle comprova primer la condició. Si la condició és certa, s'executen les ordres dins del cos del bucle. Un cop s'executa el cos del bucle, la condició es torna a comprovar i el procés es repeteix fins que la condició esdevé falsa.

    Exemple: Si volem imprimir números de l'1 al 5

    #!/bin/bash
    comptador=1
    mentre que [ $comptador -le 5 ]; fer
    echo Number: $comptador
    comptador=$((comptador + 1))
    fet

    Explicació:

    • La variable del comptador s'estableix a 1.
    • El bucle while comprova si el valor del comptador és menor o igual a 5. Mentre aquesta condició sigui certa, el bucle continua executant-se.
    • Dins del bucle, el valor actual del comptador s'imprimeix mitjançant echo.
    • El comptador s'incrementa en 1 mitjançant l'expressió $((comptador + 1)).
    bucle while

    bucle while

    24) Creeu un script d'intèrpret d'ordres que trobi i llista tots els fitxers buits d'un directori.

    Script de Shell que podeu utilitzar per trobar i llistar tots els fitxers buits d'un directori mitjançant les ordres `find' i `stat`:

    #!/bin/bash
    directori=$1″
    if [ -z $directori ]; aleshores
    echo Ús: $0
    sortida 1
    ser

    si [ ! -d $directori ]; aleshores
    echo Error: '$directory' no és un directori vàlid.
    sortida 1
    ser
    echo Fitxers buits al directori $:
    cerca $directory -type f -empty

    Explicació:

    1. ` #!/bin/bash `: Això s'anomena shebang i diu al sistema operatiu que utilitzi l'intèrpret d'ordres Bash per interpretar i executar l'script.
    2. ` directori=$1″ `: Aquesta línia assigna el primer argument de la línia d'ordres (indicat per $1) a la variable ` directori `.
    3. ` if [ -z $directori ]; aleshores `: Aquesta línia comença una instrucció if que verifica si el ` directori ` La variable està buida (-z prova una cadena buida).
    4. ` echo Ús: $0 `: Si el directori està buit, aquesta línia imprimeix un missatge d'ús, on ` $0 ` representa el nom del guió.
    5. ` sortida 1 `: aquesta línia surt de l'script amb un codi de sortida de ` 1 `, que indica un error.
    6. ` ser `: aquesta línia marca el final del ` si ` declaració.
    7. ` si [ ! -d $directori ]; aleshores `: S'inicia una altra instrucció if per comprovar si el directori proporcionat existeix (` -d ` proves per a un directori).
    8. ` echo Error: '$directory' no és un directori vàlid. `: Si el directori proporcionat no existeix, aquesta línia imprimeix un missatge d'error.
    9. ` sortida 1 `: surt de l'script amb un codi de sortida de ` 1 `.
    10. ` ser `: Marca el final del segon ` si' declaració.
    11. ` echo Fitxers buits al directori $: `: Si tot és vàlid fins ara, aquesta línia imprimeix un missatge que indica que l'script enumerarà els fitxers buits al directori especificat.
    12. ` cerca $directory -type f -empty `: aquesta línia utilitza el ` trobar ` ordre per cercar fitxers buits (` -buit `) de tipus fitxers normals (` -tipus f `) al directori especificat. A continuació, enumera aquests fitxers buits.
    Trobar fitxers buits

    Trobar fitxers buits

    Nota : Hem de proporcionar un directori com a argument en executar l'script. Aquí hem utilitzat la ruta del directori actual home/jayeshkumar/

    25) Quin és l'objectiu de l'ordre de lectura en els scripts d'intèrpret d'ordres?

    L'ordre de lectura dels scripts d'intèrpret d'ordres permet que l'script us demani informació. És com quan un ordinador et fa una pregunta i espera la teva resposta. Això és útil per a scripts que necessiten que escriviu alguna cosa o per quan l'script necessita treballar amb informació dels fitxers. L'ordre de lectura ajuda a aturar l'script i esperar el que escriviu, i després pot utilitzar aquesta informació per fer més coses a l'script.

    Sintaxi de l'ordre de lectura:

    read variable_name>

    Exemple : Si volem prendre el nom com a entrada de l'usuari per imprimir-lo.

    #!/bin/bash
    echo Introduïu el vostre nom:
    llegir el nom
    echo Hola, $name!

    453

    llegir nom

    En resum, l'ordre read s'utilitza per capturar l'entrada de l'usuari o les dades dels fitxers dins dels scripts d'intèrpret d'ordres, fent que els scripts siguin més interactius i versàtils.

    26) Escriu un script d'intèrpret d'ordres que converteixi tots els noms de fitxers d'un directori a minúscules.

    Aquí hi ha un script d'intèrpret d'ordres que converteix tots els noms de fitxer d'un directori a minúscules.

    #!/bin/bash
    directori=$1″
    if [ -z $directori ]; aleshores
    echo Ús: $0
    sortida 1
    ser

    si [ ! -d $directori ]; aleshores

    echo Error: '$directory' no és un directori vàlid.
    sortida 1
    ser

    cd $directori || sortida 1

    per al fitxer en *; fer
    if [ -f $fitxer ]; aleshores
    nounom=$(eco $fitxer | tr ‘A-Z’ ‘a-z’)
    [ $fitxer != $nom nou ] && mv $fitxer $nom nou
    ser
    fet

    Explicació:

    1. #!/bin/bash : Aquest és el shebang, que especifica que l'script s'ha d'interpretar mitjançant l'intèrpret d'ordres Bash.
    2. directori=$1″ : Aquesta línia assigna el primer argument de la línia d'ordres al directori de variables.
    3. if [ -z $directori ]; aleshores : Aquesta línia comprova si la variable de directori està buida (no es proporciona cap argument en executar l'script).
    4. echo Ús: $0 : Si el directori està buit, aquesta línia imprimeix un missatge d'ús amb el nom de l'script ($0).
    5. sortida 1 : Aquesta línia surt de l'script amb un codi de sortida 1, que indica que s'ha produït un error.
    6. f i: Això marca el final de la primera declaració if.
    7. si [ ! -d $directori]; aleshores : Aquesta línia comprova si el directori especificat no existeix (-d prova per a un directori).
    8. echo Error: '$directory' no és un directori vàlid. : Si el directori especificat no existeix, aquesta línia imprimeix un missatge d'error.
    9. sortida 1 : surt de l'script amb un codi de sortida d'1.
    10. ser : Marca el final de la segona declaració if.
    11. cd $directori || sortida 1 : Canvia el directori de treball actual al directori especificat. Si el canvi de directori falla (p. ex., directori inexistent), l'script surt amb un codi d'error.
    12. per al fitxer en *; fer: jo per al fitxer en *; fer: inicia un bucle que itera sobre tots els elements del directori actual (* coincideix amb tots els noms de fitxer).
    13. if [ -f $fitxer ]; aleshores : Comprova si l'element d'iteració del bucle actual és un fitxer normal (-f prova per a un fitxer normal).
    14. nounom=$(eco $fitxer | tr ‘A-Z’ ‘a-z’) : Converteix el nom del fitxer actual ($fitxer) a minúscules mitjançant l'ordre tr i emmagatzema el resultat a la variable newname.
    15. [ $fitxer != $nom nou ] && mv $fitxer $nom nou : compara el nom del fitxer original amb el nou nom del fitxer en minúscules. Si són diferents, canvia el nom del fitxer mitjançant l'ordre mv.
    16. ser : Marca el final de la declaració si interna.
    17. fet : Marca el final del bucle.

    454

    Nota : Hem de proporcionar un directori com a argument en executar l'script. Aquí hem utilitzat la ruta del directori actual home/jayeshkumar/test

    27) Com podeu utilitzar operacions aritmètiques dins d'un script de shell?

    Les operacions aritmètiques es poden realitzar dins d'un script de shell utilitzant diversos mètodes integrats. L'intèrpret d'ordres proporciona mecanismes per a càlculs aritmètics simples mitjançant l'expansió aritmètica Com:

    1. Expansió aritmètica ($((…)))
    2. Utilitzant l'ordre expr
    3. Utilitzant el comandament let

    Aquí teniu el nostre script Shell que explica els tres mètodes per a operacions aritmètiques.

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

    #Expansió aritmètica ($((…)))

    resultat=$((núm1 + núm2))
    echo Suma: $resultat

    #Usant l'ordre expr

    suma=$(expr $núm1 + $núm2)
    echo Suma: $sum

    #Usant el comandament let

    siguem suma = num1 + num2
    echo Suma: $sum

    Explicació:

    1. `#!/bin/bash` : Aquest és el shebang, que especifica que l'script s'ha d'interpretar mitjançant l'intèrpret d'ordres Bash.
    2. `núm1=10` i ` num2=5` : Aquestes línies assignen els valors 10 i 5 a les variables ` num1 ` i ` num2 `, respectivament.
    3. `#Expansió aritmètica ($((…)))` : Aquest és un comentari que indica l'inici de la secció que demostra l'expansió aritmètica.
    4. `resultat=$((núm1 + núm2))` : Aquesta línia utilitza l'expansió aritmètica per calcular la suma de ` núm1 ` i ` num2 ` i emmagatzema el resultat al fitxer ` resultat ` variable.
    5. `echo Sum: $resultat` : Aquesta línia imprimeix la suma calculada utilitzant el valor emmagatzemat al ` resultat ` variable.
    6. `#Usant l'ordre expr` : Aquest és un comentari que indica l'inici de la secció que demostra l'ús del ` expr ` ordre per a operacions aritmètiques.
    7. `suma=$(expr $núm1 + $núm2)` : Aquesta línia utilitza el ` expr ` ordre per calcular la suma de ` núm1 ` i ` num2 ` i emmagatzema el resultat al fitxer ` suma ` variable. Tingueu en compte que el ` expr L'ordre ` requereix espais al voltant dels operadors.
    8. `echo Sum: $sum` : Aquesta línia imprimeix la suma calculada utilitzant el valor emmagatzemat al ` suma ` variable.
    9. `#Usant l'ordre let` : Aquest és un comentari que indica l'inici de la secció que demostra l'ús del ` deixar ` ordre per a operacions aritmètiques.
    10. `deixar suma = num1 + num2″` : Aquesta línia utilitza el ` deixar ` ordre per calcular la suma de ` núm1 ` i ` num2 ` i assigna el resultat a ` suma ` variable. El ` deixar L'ordre ` no requereix espais al voltant dels operadors.
    11. `echo Sum: $sum` : Aquesta línia imprimeix la suma calculada utilitzant el valor emmagatzemat al ` suma ` variable.
    aritmètica

    aritmètica

    28) Creeu un script que comprovi si es pot accedir a un host de xarxa.

    Aquí hi ha un script d'intèrpret d'ordres senzill que utilitza l'ordre ping per comprovar si es pot accedir a un host de xarxa:

    #!/bin/bash
    amfitrió=$1″
    if [ -z $amfitrió ]; aleshores
    echo Ús: $0
    sortida 1
    ser
    ping -c 4 $host

    si [ $? -eq 0]; aleshores
    echo $host és accessible.
    altra cosa
    echo $host no és accessible.
    ser

    Explicació:

    1. Pren un nom d'amfitrió o una adreça IP com a argument i comprova si es proporciona l'argument.
    2. Si no es proporciona cap argument, mostra un missatge d'ús i surt.
    3. Utilitza l'ordre ping amb l'opció -c 4 per enviar quatre sol·licituds d'eco ICMP a l'amfitrió especificat.
    4. Després d'executar l'ordre ping, comprova l'estat de sortida ($?). Si l'estat de sortida és 0, vol dir que l'amfitrió és accessible i l'script imprimeix un missatge d'èxit. En cas contrari, imprimeix un missatge d'error.

    456

    Nota : Hem de proporcionar un nom d'amfitrió com a argument quan executem l'script. Aquí hem utilitzat google.com

    29) Escriu un script de Shell per trobar l'element més gran d'una matriu:

    Aquí hi ha un script de shell per trobar l'element més gran d'una matriu.

    #!/bin/bash
    # Declarar una matriu
    matriu=(3 56 24 89 67)

    # Inicialitzeu una variable per emmagatzemar el valor màxim, començant pel primer element

    max=${array[0]}

    # Iterar per la matriu

    per num a ${array[@]}; fer

    # Compara cada element amb el màxim actual

    si ((número> màxim)); aleshores
    màxim=$núm
    ser
    fet

    # Imprimeix el valor màxim

    echo L'element màxim de la matriu és: $max

    Explicació:

    1. ` #!/bin/bash `: La línia shebang especifica que l'script s'ha d'interpretar mitjançant l'intèrpret d'ordres Bash.
    2. ` matriu=(3 56 24 89 67) `: La matriu es declara i s'inicia amb valors.
    3. ` max=${array[0]} `: `max` s'inicialitza amb el primer element de la matriu.
    4. ` per num a ${array[@]}; fer `: Un bucle `for` s'utilitza per iterar pels elements de la matriu.
    5. ` si ((número> màxim)); aleshores `: Una instrucció `if` verifica si l'element actual `num` és més gran que el màxim actual `max`.
    6. ` max=$num`: Si`núm ` és més gran que `max`, `max` s'actualitza amb el valor de num.
    7. ` fet `: El bucle `for` està tancat.
    8. ` echo L'element màxim de la matriu és: $max `: Finalment, l'script imprimeix el valor màxim trobat a la matriu.
    461

    nombre més gran

    30) Escriu un guió per calcular la suma dels elements d'una matriu.

    #!/bin/bash

    # Declarar una matriu

    matriu=(1 65 22 19 94)

    # Inicialitzar una variable per emmagatzemar la suma

    suma=0

    # Iterar per la matriu i afegir cada element a la suma

    per num a ${array[@]}; fer
    am=$((am + am))
    fet

    # Imprimeix la suma

    echo La suma d'elements de la matriu és: $sum

    Explicació:

    ` #!/bin/bash `: La línia shebang especifica que l'script s'ha d'interpretar mitjançant l'intèrpret d'ordres Bash.

    ` matriu=(1 65 22 19 94) `: La matriu es declara i s'inicia amb valors.

    ` suma=0 `: ` suma ` s'inicia a zero per contenir la suma d'elements.

    ` per num a ${array[@]}; fer `: A` per ` bucle s'utilitza per iterar a través dels elements de la matriu.

    ` am=$((am + am)) `: Dins del bucle, cada element ` en una ` s'afegeix al ` suma ` variable.

    ` fet `: El ` per ` el bucle està tancat.

    `echo La suma d'elements de la matriu és: $sum`: Finalment, l'script imprimeix la suma de tots els elements de la matriu.

    462

    Suma d'elements

    Més informació sobre els scripts de Shell

    Conclusió

    Tots els geeks sabem que el shell script és molt útil per augmentar la productivitat del treball i també per estalviar temps. Per tant, en aquest article hem tractat 30 exemples de scripts d'intèrpret d'ordres molt útils i la majoria d'estafadors . Esperem que aquesta guia completa sobre l'exemple de shell script us ajudi a entendre tot sobre els shell scripts.



    : Si el directori està buit, aquesta línia imprimeix un missatge d'ús amb el nom de l'script (

    Per a totes les distribucions de Linux, l'script shell és com una vareta màgica que automatitza el procés, estalvia temps als usuaris i augmenta la productivitat. Aquest tutorial de scripting us introduirà als 25 exemples de scripting.

    Però abans de passar al tema de shell scripting Per exemple, entenem l'script d'intèrpret d'ordres i els casos d'ús reals de l'script d'intèrpret d'ordres.

    Què és Shell Script?

    Bé, la closca és una CLI ( intèrpret de línia d'ordres ), que s'executa en una finestra de text on els usuaris poden gestionar i executar ordres de shell. D'altra banda, el procés d'escriure un conjunt d'ordres que s'executaran en un sistema Linux Un fitxer que inclou aquestes instruccions s'anomena script bash.

    Usos dels scripts de Shell

    A continuació es mostren alguns usos habituals de Shell Script:

    • Automatització de tasques – Es pot utilitzar per automatitzar tasques repetitives com ara còpies de seguretat habituals i tasques d'instal·lació de programari.
    • Personalització - Es pot utilitzar scripts d'intèrpret d'ordres per dissenyar el seu entorn de línia d'ordres i realitzar fàcilment la seva tasca segons les necessitats.
    • Gestió de fitxers - Els scripts d'intèrpret d'ordres també es poden utilitzar per gestionar i manipular fitxers i directoris, com ara moure, copiar, canviar el nom o suprimir fitxers.

    Exemples de script de Shell a Linux

    1) Què indica el shebang (#!) al començament d'un script de shell?

    El shebang (#!) al principi d'un script indica l'intèrpret que s'ha d'utilitzar per executar l'script. Indica al sistema quin shell o intèrpret ha d'interpretar les ordres de l'script.

    Per exemple: Suposem que tenim un script anomenat myscript.sh escrit a l'intèrpret d'ordres Bash:

    shebang

    shebang

    En aquest exemple:

    • El #!/bin/bash al començament de l'script indica que l'script s'ha d'interpretar mitjançant l'intèrpret d'ordres Bash.
    • Les ordres d'eco s'utilitzen per imprimir missatges al terminal.

    2) Com executeu un script de shell des de la línia d'ordres?

    Per executar un script de shell des de la línia d'ordres, hem de seguir aquests passos:

    • Assegureu-vos que el fitxer d'script tingui permisos executables mitjançant l' comanda chmod :
    chmod +x myscript.sh>
    • Executeu l'script utilitzant el seu nom de fitxer:
    ./myscript.sh>

    Aquí has ​​de substituir myscrtipt.sh amb el nom d'escriptura anterior.

    3) Escriviu un script d'intèrpret d'ordres que imprimeixi techcodeview.com al terminal.

    Creeu un nom d'script `myscript.sh` (estem utilitzant ` perquè ` editor, podeu triar qualsevol editor)

    vim myscript.sh>

    #!/bin/bash
    # Aquest script imprimeix techcodeview.com al terminal
    echo techcodeview.com

    Nom d'impressió

    Nom d'impressió

    Fem que el nostre script sigui executable utilitzant `chmod +x` i després executem amb `./myscipt.sh` i obtenim la nostra sortida desitjada techcodeview.com.

    4) Expliqueu el propòsit de l'ordre echo en els scripts de shell.

    El comanda d'eco s'utilitza per mostrar text o variables al terminal. S'utilitza habitualment per imprimir missatges, valors variables i generar resultats del programa.

    434

    comanda d'eco

    En aquest exemple hem executat `echo` directament al terminal, ja que funciona igual dins de l'script de shell.

    5) Com es pot assignar un valor a una variable en un script de shell?

    Les variables s'assignen valors mitjançant l'operador d'assignació =.

    Per exemple:

    #!/bin/bash
    # Assignació d'un valor a una variable
    nom=Jayesh
    edat = 21
    echo $nom $edat

    Explicació:

    • A la variable de nom se li assigna el valor Jayesh.
    • A la variable edat se li assigna el valor 21.
    • echo s'utilitza per imprimir i `$name` `$age` s'utilitza per cridar el valor emmagatzemat a les variables.

    435

    6) Escriu un script de shell que prengui el nom d'un usuari com a entrada i el saludi.

    Creeu un nom d'script `example.sh`.

    #!/bin/bash
    # Demaneu el seu nom a l'usuari
    echo Com et dius?
    llegir el nom
    # Saludeu l'usuari
    echo Hola, $name! Encantat de conèixer-te.

    Explicació:

    • #!/bin/bash: aquesta és la línia shebang. Indica al sistema que utilitzi l'intèrpret Bash per executar l'script.
    • # Demaneu el seu nom a l'usuari: Això és un comentari. Proporciona context sobre el codi proper. Els comentaris són ignorats per l'intèrpret.
    • echo Com et dius?: L'ordre echo s'utilitza per mostrar el text entre cometes dobles al terminal.
    • read name: l'ordre read espera que l'usuari introdueixi text i l'emmagatzema al nom de la variable.
    • echo Hola, $name! Encantat de conèixer-te.: Aquesta línia utilitza l'ordre echo per imprimir un missatge de salutació que inclou el valor de la variable de nom, que es va recopilar de l'entrada de l'usuari.

    436

    7) Com s'afegeixen comentaris a un script de shell?

    Comentaris en shell script s'utilitzen per proporcionar explicacions o context al codi. L'intèrpret els ignora i només estan pensats per als humans que llegeixen el guió. Podeu afegir comentaris amb el símbol #.

    #!/bin/bash
    # Aquest és un comentari que explica el propòsit del guió
    eco gfg

    8) Creeu un script d'intèrpret d'ordres que comprovi si existeix un fitxer al directori actual.

    Aquí hi ha un script que verifica si un fitxer anomenat example.txt existeix al directori actual:

    #!/bin/bash
    fitxer=exemple.txt
    # Comproveu si el fitxer existeix
    if [ -e $fitxer ]; aleshores
    echo El fitxer existeix: $fitxer
    altra cosa
    echo No s'ha trobat el fitxer: $fitxer
    ser

    Explicació:

    1. #!/bin/bash: Aquesta és la línia shebang que especifica l'intèrpret (/bin/bash) que s'utilitzarà per executar l'script.
    2. file=example.txt: aquesta línia defineix el fitxer variable i li assigna el valor example.txt. Podeu substituir-lo pel nom del fitxer que voleu comprovar.
    3. if [ -e $fitxer ]; then: Aquesta línia comença una sentència if. La condició [ -e $fitxer ] comprova si el fitxer especificat pel valor de la variable de fitxer existeix. El senyalador -e s'utilitza per comprovar l'existència de fitxers.
    4. echo El fitxer existeix: $fitxer: si la condició és certa (és a dir, el fitxer existeix), aquesta línia imprimeix un missatge que indica que el fitxer existeix, juntament amb el nom del fitxer.
    5. else: si la condició és falsa (és a dir, el fitxer no existeix), l'script executa el codi a la branca else.
    6. echo No s'ha trobat el fitxer: $fitxer: aquesta línia imprimeix un missatge d'error que indica que no s'ha trobat el fitxer especificat, juntament amb el nom del fitxer.
    7. fi: Aquesta línia marca el final de la instrucció if.
    Trobar fitxer

    Trobar fitxer

    9) Quina diferència hi ha entre cometes simples (‘) i cometes dobles () en els scripts de shell?

    Les cometes simples (‘) i les cometes dobles () s'utilitzen per incloure cadenes en els scripts d'intèrpret d'ordres, però tenen comportaments diferents:

    • Cometes simples: tot el que hi ha entre cometes simples es tracta com una cadena literal. Els noms de variables i la majoria de caràcters especials no s'amplien.
    • Cometes dobles: s'amplien les variables i certs caràcters especials dins de cometes dobles. Els continguts estan subjectes a substitució de variables i substitució d'ordres.

    #!/bin/bash

    abcd=Hola
    echo ‘$abcd’ # Sortida: $abcd
    echo $abcd # Sortida: Hola

    10) Com podeu utilitzar arguments de línia d'ordres en un script de shell?

    Arguments de la línia d'ordres són valors proporcionats a un script quan s'executa. S'hi pot accedir dins de l'script mitjançant variables especials com $1, $2, etc., on $1 representa el primer argument, $2 representa el segon argument, etc.

    Per exemple: Si el nostre nom d'script a `example.sh`

    #!/bin/bash

    echo Nom de l'script: $0
    echo Primer argument: $1
    echo Segon argument: $2

    Si executem l'script amb `.example.sh hello_1 hello_2`, sortirà:

    cli arguments

    cli arguments

    11) Com s'utilitza el bucle for per recórrer una llista de valors?

    Creeu un nom d'script `example.sh`.

    #!/bin/bash

    fruites=(data de cirera poma i plàtan)
    per a fruites a ${fruits[@]}; fer
    echo Fruita actual: $fruit
    fet

    Explicació:

    La línia `fruits=` crea una matriu anomenada fruites amb quatre elements: poma, plàtan, cirera i dàtil.

    • per a fruites a ${fruits[@]}; do: aquesta línia comença un bucle for. Aquí teniu el significat de cada part:
    • for fruit: declara una variable de bucle anomenada fruit. En cada iteració del bucle, fruit mantindrà el valor de l'element actual de la matriu de fruites.
    • ${fruits[@]}: aquesta és una expansió de matriu que pren tots els elements de la matriu de fruites. La sintaxi ${…} garanteix que cada element es tracti com un element separat.
    • do: aquesta paraula clau marca l'inici del cos del bucle.
    • echo Fruit actual: $fruit: Dins del bucle, aquesta línia utilitza l'ordre echo per mostrar el valor actual de la variable de bucle fruit. Imprimeix un missatge com ara Fruit actual: poma per a cada fruita de la matriu.
    • fet: aquesta paraula clau marca el final del cos del bucle. Indica a l'script que el bucle ha acabat.
    per bucle

    per bucle

    12) Escriu un script d'intèrpret d'ordres que calculi la suma dels nombres enters d'1 a N mitjançant un bucle.

    Creeu un nom d'script `example.sh`.

    #!/bin/bash

    echo Introduïu un número (N):
    llegir N
    suma=0
    per (( i=1; i<=$N; i++ )); fer
    suma=$((suma + i))
    fet
    echo La suma dels nombres enters d'1 a $N és: $sum

    Explicació:
    L'script comença demanant-vos que introduïu un número (N) mitjançant la lectura. Aquest número determinarà quantes vegades s'executa el bucle.

    1. La variable suma s'inicialitza a 0. Aquesta variable farà un seguiment de la suma dels nombres enters.
    2. El bucle for comença amb for (( i=1; i<=$N; i++ )). Aquesta estructura de bucle s'utilitza per repetir un conjunt d'accions un nombre determinat de vegades, en aquest cas, des d'1 fins al valor de N.
    3. Dins del bucle, passen aquestes coses:
      • i=1 estableix la variable de bucle i a 1 al començament de cada iteració.
      • La condició de bucle i<=$N comprova si i encara és menor o igual que el nombre donat N.
      • Si la condició és certa, el cos del bucle s'executa.
      • sum=$((suma + i)) calcula el nou valor de suma afegint-hi el valor actual de i. Això suma els nombres enters de 1 al valor i actual.
    4. Després de cada iteració, i++ augmenta el valor de i en 1.
    5. El bucle continua funcionant fins que la condició i<=$N esdevé falsa (quan i és més gran que N).
    6. Un cop finalitza el bucle, l'script mostra la suma dels nombres enters des de l'1 fins al número introduït N.

    439

    13) Creeu un script que cerqui una paraula específica en un fitxer i compta les seves ocurrències.

    Creeu un nom d'script `word_count.sh`

    #!/bin/bash

    echo Introduïu la paraula per cercar:
    llegir paraula_destinació
    echo Introduïu el nom del fitxer:
    llegir el nom del fitxer
    count=$(grep -o -w $paraula_objectiu $nomfitxer | wc -l)
    echo La paraula '$target_word' apareix $count times a '$filename'.

    Explicació:

    • echo Introduïu la paraula a cercar:: Aquesta línia mostra un missatge demanant a l'usuari que introdueixi una paraula que vol cercar en un fitxer.
    • read target_word: Aquesta línia llegeix l'entrada proporcionada per l'usuari i l'emmagatzema en una variable anomenada target_word.
    • echo Introduïu el nom del fitxer:: Aquesta línia mostra un missatge demanant a l'usuari que introdueixi el nom del fitxer en què vol cercar.
    • llegir nom de fitxer: aquesta línia llegeix l'entrada proporcionada per l'usuari i l'emmagatzema en una variable anomenada nom de fitxer.
    • count=$(grep -o -w $target_word $filename | wc -l): Aquesta línia fa el treball principal de l'script. Anem a desglossar-ho més:
      • grep -o -w $target_word $filename: aquesta part de l'ordre cerca les ocurrències de la paraula_destinació al nom de fitxer especificat. Les opcions -o i -w asseguren que només es compten les coincidències de paraules senceres.
      • |: Aquesta és una canalització, que pren la sortida de l'ordre anterior i l'envia com a entrada a l'ordre següent.
      • wc -l: aquesta part de l'ordre utilitza l'ordre wc per comptar el nombre de línies de l'entrada. L'opció -l compta específicament les línies.
      • L'ordre sencera calcula el recompte d'ocurrències de la paraula_destinació al fitxer i assigna aquest recompte a la variable count

    441

    14) Expliqueu les diferències entre la sortida estàndard (stdout) i l'error estàndard (stderr).

    La diferència principal entre la sortida estàndard (stdout) i l'error estàndard (stderr) és la següent:

    • Sortida estàndard (stdout): Aquest és el flux de sortida predeterminat on va la sortida normal d'una ordre. Es mostra al terminal de manera predeterminada. Podeu redirigir-lo a un fitxer mitjançant>.
    • Error estàndard (stderr): Aquest és el flux de sortida dels missatges d'error i advertències. També es mostra al terminal de manera predeterminada. Podeu redirigir-lo a un fitxer mitjançant 2>.

    15) Expliqueu el concepte de sentències condicionals en shell scripting.

    Declaracions condicionals en scripts de shell ens permeten prendre decisions i controlar el flux del nostre guió en funció de determinades condicions. Permeten que el nostre script executi diferents conjunts d'ordres depenent de si una condició concreta és certa o falsa. Les sentències condicionals primàries en els scripts d'intèrpret d'ordres són la sentència if, la sentència elif (opcional) i la sentència else (opcional).

    A continuació, es mostra l'estructura bàsica d'una instrucció condicional en scripts de shell:

    si [condició]; aleshores
    # Ordres per executar si la condició és certa
    elif [una altra_condició]; aleshores
    # Ordres per executar si una altra_condició és certa (opcional)
    altra cosa
    # Ordres per executar si cap de les condicions és certa (opcional)
    ser

    Explicació:

    • [condició] = Ordre que avalua la condició i retorna un estat de sortida veritable (0) o fals (no zero).
    • then = És una paraula clau que indica que les ordres que la segueixen s'executaran si la condició s'avalua com a vertadera.
    • elif = (abreviatura de else if) És una secció que ens permet especificar condicions addicionals per comprovar.
    • else = és una secció que conté ordres que s'executaran si cap de les condicions és certa.
    • fi = És una paraula clau que marca el final del bloc condicional.

    16) Com llegiu les línies d'un fitxer dins d'un script de shell?

    A llegir línies des d'un fitxer dins d'un script d'intèrpret d'ordres, podem utilitzar diversos mètodes, però un enfocament comú és utilitzar un bucle while en combinació amb l'ordre read. Així és com ho podem fer:

    #!/bin/bash
    fitxer=/home/jayeshkumar/jayesh.txt
    # Comproveu si el fitxer existeix
    if [ -e $fitxer ]; aleshores
    mentre que IFS= llegeix la línia -r; fer
    echo Line read: $line
    # Afegiu aquí la vostra lògica de processament
    fet <$fitxer
    altra cosa
    echo No s'ha trobat el fitxer: $fitxer
    ser

    Explicació:

    1. #!/bin/bash: Aquesta és la línia shebang que especifica l'intèrpret (/bin/bash) que s'utilitzarà per executar l'script.
    2. file=/home/jayeshkumar/jayesh.txt: aquesta línia defineix el fitxer variable i assigna el camí complet al fitxer jayesh.txt al directori /home/jayeshkumar. Canvieu aquest camí perquè coincideixi amb el camí real del fitxer que voleu llegir.
    3. if [ -e $fitxer ]; then: Aquesta línia comença una sentència if. Comprova si el fitxer especificat per la variable $file existeix. El senyalador -e comprova l'existència del fitxer.
    4. mentre que IFS= llegeix la línia -r; do: aquesta línia inicia un bucle while que llegeix les línies del fitxer.
      • IFS=: l'IFS (Internal Field Separator) s'estableix en un valor buit per preservar els espais inicials i finals.
      • read -r line: llegeix la línia actual del fitxer i l'emmagatzema a la línia variable.
    5. echo Line read: $line: Aquesta línia imprimeix el contingut de la línia que s'ha llegit del fitxer. La variable $line conté el contingut de la línia actual.
    6. # Afegiu la vostra lògica de processament aquí: aquest és un comentari de marcador de posició on podeu afegir la vostra pròpia lògica per processar cada línia. Per exemple, podeu analitzar la línia, extreure informació o realitzar accions específiques basades en el contingut.
    7. done <$file: Això marca el final del bucle while. El < $file redirigeix ​​el contingut del fitxer per ser llegit pel bucle.
    8. else: si el fitxer no existeix (la condició de la instrucció if és falsa), l'script executa el codi a la branca else.
    9. echo No s'ha trobat el fitxer: $fitxer: aquesta línia imprimeix un missatge d'error que indica que no s'ha trobat el fitxer especificat.
    10. fi: Aquesta línia marca el final de la instrucció if.
    fitxer de lectura

    fitxer de lectura

    Aquí hem utilitzat ` pwd ` comanda per obtenir la ruta del directori actual.

    17) Escriu una funció en un script de shell que calculi el factorial d'un nombre donat.

    Aquí teniu el guió quecalcula el factoriald'un nombre donat.

    #!/bin/bash
    # Definiu una funció per calcular factorial
    calcula_factorial() {
    num=$1
    fet = 1
    per ((i=1; i<=núm; i++)); fer
    fet=$((fet * i))
    fet
    echo $fet
    }
    # Demaneu a l'usuari que introdueixi un número
    echo Introduïu un número:
    llegir input_num
    # Truqueu a la funció calculate_factorial amb el número d'entrada
    factor_result=$(calcular_factorial $núm_entrada)
    # Mostra el resultat factorial
    echo El factor de $núm_entrada és: $resultat_factorial

    Explicació:

    1. L'script comença amb la línia shebang #!/bin/bash per especificar l'intèrpret.
    2. calculate_factorial() es defineix com una funció. Es necessita un argument, num, que és el nombre pel qual s'ha de calcular el factorial.
    3. Dins de la funció, fact s'inicialitza a 1. Aquesta variable emmagatzemarà el resultat factorial.
    4. El bucle for itera des de l'1 fins al nombre donat (num). En cada iteració, multiplica el valor actual de fet per l'índex de bucle i.
    5. Un cop finalitzat el bucle, la variable de fet conté el factorial calculat.
    6. L'script demana a l'usuari que introdueixi un número mitjançant la lectura.
    7. La funció calculate_factorial es crida amb el número proporcionat per l'usuari i el resultat s'emmagatzema a la variable factorial_result.
    8. Finalment, l'script mostra el resultat factorial calculat.
    Factorial

    Factorial

    18) Com gestioneu senyals com Ctrl + C en un script de shell?

    En un script d'intèrpret d'ordres, podeu gestionar senyals com Ctrl+C (també conegut com SIGINT) mitjançant l'ordre trap. Ctrl+C genera un senyal SIGINT quan l'usuari el prem per interrompre l'script o programa en execució. Mitjançant l'ordre trap, podeu especificar les accions que cal dur a terme quan es rep un senyal concret. A continuació s'explica com gestioneu senyals com Ctrl+C en un script de shell:

    #!/bin/bash
    netejar() {
    echo Script interromput. S'està fent la neteja...
    # Afegeix aquí les teves accions de neteja
    sortida 1
    }
    # Configureu una trampa per trucar a la funció de neteja quan es rebi Ctrl+C (SIGINT).
    neteja de paranys SIGINT
    # La resta del vostre guió
    echo Corrent...
    dormir 10
    eco Acabat.

    El maneig dels senyals és important per fer que els scripts siguin robusts i assegurar-se que gestionen les interrupcions inesperades amb gràcia. Podeu personalitzar la funció de neteja perquè s'ajusti a les vostres necessitats específiques, com ara tancar fitxers, aturar processos o registrar informació abans que surti l'script.

    Explicació:

    1. #!/bin/bash: aquesta línia shebang especifica l'intèrpret que s'utilitzarà per executar l'script.
    2. cleanup() { … }: Això defineix una funció anomenada cleanup. Dins d'aquesta funció, podeu incloure qualsevol acció que s'hagi de realitzar quan s'interromp l'script, com ara tancar fitxers, alliberar recursos o realitzar altres tasques de neteja.
    3. trap cleanup SIGINT: l'ordre trap s'utilitza per configurar un controlador de senyal. En aquest cas, especifica que quan es rep el senyal SIGINT (Ctrl+C), s'ha d'executar la funció de neteja.
    4. echo Running..., sleep 10, echo Finished.: Són només ordres d'exemple per simular l'execució d'un script.

    446

    19) Creeu un script que cerqui i elimineu les línies duplicades en un fitxer de text.

    Aquí teniu el nostre guió de Linux en el qual eliminarem les línies duplicades d'un fitxer de text.

    #!/bin/bash
    fitxer_entrada=input.txt
    fitxer_output=output.txt
    ordena $fitxer_entrada | uniq> $fitxer_sortida
    echo Les línies duplicades s'han eliminat correctament.

    Explicació:

    1. L'script comença amb un shebang (#!/bin/bash), que indica que l'script s'ha d'interpretar mitjançant l'intèrpret d'ordres Bash.
    2. La variable input_file s'estableix amb el nom del fitxer d'entrada que conté línies duplicades (canvieu-ho pel nom del fitxer d'entrada real).
    3. La variable output_file s'estableix amb el nom del fitxer de sortida on s'eliminaran els duplicats (canvieu-ho pel nom del fitxer de sortida desitjat).
    4. L'script utilitza l'ordre sort per ordenar les línies del fitxer d'entrada. L'ordenació de les línies garanteix que les línies duplicades s'agrupin.
    5. A continuació, les línies ordenades es passen per l'ordre uniq, que elimina les línies duplicades consecutives. La sortida d'aquest procés es redirigeix ​​al fitxer de sortida.
    6. Després d'eliminar els duplicats, l'script imprimeix un missatge d'èxit.
    eliminació de línies duplicades

    eliminació de línies duplicades

    Aquí, fem servir ` gat ` per mostrar el text dins del fitxer de text.

    20) Escriu un script que generi una contrasenya aleatòria segura.

    Aquí teniu el nostre script per generar una contrasenya aleatòria segura.

    #!/bin/bash
    # Funció per generar una contrasenya aleatòria
    genera_contrasenya() {
    tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
    }
    # Truqueu a la funció i emmagatzemeu la contrasenya generada
    contrasenya=$(genera_contrasenya)
    echo Contrasenya generada: $contrasenya

    Nota: En conseqüència, l'usuari pot canviar la longitud de la contrasenya substituint el número '12'.

    Explicació:

    1. L'script comença amb un shebang (#!/bin/bash), que indica que s'ha d'interpretar mitjançant l'intèrpret d'ordres Bash.
    2. La funció generate_password està definida per generar una contrasenya aleatòria. Així és com funciona:
      • tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
      • fold -w 12 divideix les dades aleatòries filtrades en línies d'amplada de 12 caràcters cadascuna.
      • head -n 1 selecciona la primera línia, donant-nos efectivament una seqüència aleatòria de caràcters de longitud 12.
    3. La variable de contrasenya s'assigna el resultat de cridar la funció generate_password.
    4. Finalment, la contrasenya generada es mostra amb echo.

    448

    21) Escriviu un script de shell que calculi la mida total de tots els fitxers d'un directori.

    Aquí hi ha un script de shell per calcular la mida total de tots els fitxers d'un directori.

    #!/bin/bash
    directori=/camí/al/teu/directori
    total_size=$(du -csh $directori | grep total | awk '{print $1}')
    echo Mida total dels fitxers a $directory: $total_size

    Explicació:

    1. L'script comença amb #!/bin/bash shebang, que indica que s'ha d'interpretar mitjançant l'intèrpret d'ordres Bash.
    2. La variable de directori s'estableix a la ruta del directori per al qual voleu calcular la mida total del fitxer. Substituïu /path/to/your/directory pel camí real.
    3. L'ordre du s'utilitza per estimar l'ús d'espai de fitxers. Les opcions utilitzades són:
      • -c: Produeix un gran total.
      • -s: Mostra només la mida total del directori especificat.
      • -h: mides d'impressió en un format llegible per persones (p. ex., KB, MB, GB).
    4. La sortida de du s'envia a grep total per filtrar la línia que conté la mida total.
    5. awk '{print $1}' s'utilitza per extreure el primer camp (mida total) de la línia.
    6. La mida total calculada s'emmagatzema a la variable total_size.
    7. Finalment, l'script mostra la mida total mitjançant echo.
    Mida total dels fitxers

    Mida total dels fitxers

    Aquí hem utilitzat ` pwd ` per veure la ruta del directori actual.

    22) Expliqueu la diferència entre les declaracions if i elif en els scripts d'intèrpret d'ordres.

    Característica `si`Staiftement Declaració 'elif'.
    Propòsit Expliqueu la diferència entre les declaracions if i elif en els scripts de shell. Proporciona condicions alternatives per comprovar quan la condició inicial si és falsa.
    ús S'utilitza per a la condició inicial. S'utilitza després de la condició si inicial per comprovar condicions addicionals.
    nombre de blocs Només pot tenir un bloc si. Pot tenir diversos blocs elif, però només un altre bloc (opcional).
    Execució Executa el bloc de codi associat a la instrucció if si la condició és certa. Si la condició és falsa, s'executa el bloc else (si està present) (opcional). Comprova cada condició elif en ordre. Si una condició elif és certa, s'executa el bloc de codi corresponent i l'script surt de tot el bloc condicional. Si cap de les condicions elif és certa, s'executa el bloc else (si està present).
    Estructures imbricades Es pot imbricar dins d'altres blocs if, elif o else. No es pot niuar dins d'un altre bloc elif, però es pot utilitzar dins d'un bloc if o else.

    Entenem-ho amb un exemple.

    #!/bin/bash
    nombre=5
    if [ $número -gt 10 ]; aleshores
    echo $número és més gran que 10
    altra cosa
    echo $número no és més gran que 10
    ser
    eco ———
    if [ $número -gt 10 ]; aleshores
    echo $número és més gran que 10
    elif [ $número -eq 10 ]; aleshores
    echo $número és igual a 10
    altra cosa
    echo $número és inferior a 10
    ser

    Explicació:

    En aquest exemple, el primer bloc if comprova si el nombre és més gran que 10. Si no, imprimeix un missatge que indica que el nombre no és superior a 10. El segon bloc amb declaracions elif verifica múltiples condicions seqüencialment fins que una d'elles és certa. En aquest cas, com que el valor del nombre és 5, la sortida serà:

    if_elif diferència

    if_elif diferència

    23) Com s'utilitza un bucle while per executar ordres repetidament?

    Un bucle while s'utilitza en els scripts d'intèrpret d'ordres per executar repetidament un conjunt d'ordres sempre que una condició especificada sigui certa. El bucle continua executant les ordres fins que la condició esdevé falsa.

    Aquí teniu la sintaxi bàsica d'un bucle while:

    mentre que [condició]; fer
    # Ordres a executar
    fet

    Explicació:

    1. El bucle `while` comença amb la paraula clau `while` seguida d'una condició entre claudàtors `[ ]`.
    2. El cos del bucle, que conté les ordres que s'han d'executar, es troba dins de les paraules clau 'do' i 'fet'.
    3. El bucle comprova primer la condició. Si la condició és certa, s'executen les ordres dins del cos del bucle. Un cop s'executa el cos del bucle, la condició es torna a comprovar i el procés es repeteix fins que la condició esdevé falsa.

    Exemple: Si volem imprimir números de l'1 al 5

    #!/bin/bash
    comptador=1
    mentre que [ $comptador -le 5 ]; fer
    echo Number: $comptador
    comptador=$((comptador + 1))
    fet

    Explicació:

    • La variable del comptador s'estableix a 1.
    • El bucle while comprova si el valor del comptador és menor o igual a 5. Mentre aquesta condició sigui certa, el bucle continua executant-se.
    • Dins del bucle, el valor actual del comptador s'imprimeix mitjançant echo.
    • El comptador s'incrementa en 1 mitjançant l'expressió $((comptador + 1)).
    bucle while

    bucle while

    24) Creeu un script d'intèrpret d'ordres que trobi i llista tots els fitxers buits d'un directori.

    Script de Shell que podeu utilitzar per trobar i llistar tots els fitxers buits d'un directori mitjançant les ordres `find' i `stat`:

    #!/bin/bash
    directori=$1″
    if [ -z $directori ]; aleshores
    echo Ús: $0
    sortida 1
    ser

    si [ ! -d $directori ]; aleshores
    echo Error: '$directory' no és un directori vàlid.
    sortida 1
    ser
    echo Fitxers buits al directori $:
    cerca $directory -type f -empty

    Explicació:

    1. ` #!/bin/bash `: Això s'anomena shebang i diu al sistema operatiu que utilitzi l'intèrpret d'ordres Bash per interpretar i executar l'script.
    2. ` directori=$1″ `: Aquesta línia assigna el primer argument de la línia d'ordres (indicat per $1) a la variable ` directori `.
    3. ` if [ -z $directori ]; aleshores `: Aquesta línia comença una instrucció if que verifica si el ` directori ` La variable està buida (-z prova una cadena buida).
    4. ` echo Ús: $0 `: Si el directori està buit, aquesta línia imprimeix un missatge d'ús, on ` $0 ` representa el nom del guió.
    5. ` sortida 1 `: aquesta línia surt de l'script amb un codi de sortida de ` 1 `, que indica un error.
    6. ` ser `: aquesta línia marca el final del ` si ` declaració.
    7. ` si [ ! -d $directori ]; aleshores `: S'inicia una altra instrucció if per comprovar si el directori proporcionat existeix (` -d ` proves per a un directori).
    8. ` echo Error: '$directory' no és un directori vàlid. `: Si el directori proporcionat no existeix, aquesta línia imprimeix un missatge d'error.
    9. ` sortida 1 `: surt de l'script amb un codi de sortida de ` 1 `.
    10. ` ser `: Marca el final del segon ` si' declaració.
    11. ` echo Fitxers buits al directori $: `: Si tot és vàlid fins ara, aquesta línia imprimeix un missatge que indica que l'script enumerarà els fitxers buits al directori especificat.
    12. ` cerca $directory -type f -empty `: aquesta línia utilitza el ` trobar ` ordre per cercar fitxers buits (` -buit `) de tipus fitxers normals (` -tipus f `) al directori especificat. A continuació, enumera aquests fitxers buits.
    Trobar fitxers buits

    Trobar fitxers buits

    Nota : Hem de proporcionar un directori com a argument en executar l'script. Aquí hem utilitzat la ruta del directori actual home/jayeshkumar/

    25) Quin és l'objectiu de l'ordre de lectura en els scripts d'intèrpret d'ordres?

    L'ordre de lectura dels scripts d'intèrpret d'ordres permet que l'script us demani informació. És com quan un ordinador et fa una pregunta i espera la teva resposta. Això és útil per a scripts que necessiten que escriviu alguna cosa o per quan l'script necessita treballar amb informació dels fitxers. L'ordre de lectura ajuda a aturar l'script i esperar el que escriviu, i després pot utilitzar aquesta informació per fer més coses a l'script.

    Sintaxi de l'ordre de lectura:

    read variable_name>

    Exemple : Si volem prendre el nom com a entrada de l'usuari per imprimir-lo.

    #!/bin/bash
    echo Introduïu el vostre nom:
    llegir el nom
    echo Hola, $name!

    453

    llegir nom

    En resum, l'ordre read s'utilitza per capturar l'entrada de l'usuari o les dades dels fitxers dins dels scripts d'intèrpret d'ordres, fent que els scripts siguin més interactius i versàtils.

    26) Escriu un script d'intèrpret d'ordres que converteixi tots els noms de fitxers d'un directori a minúscules.

    Aquí hi ha un script d'intèrpret d'ordres que converteix tots els noms de fitxer d'un directori a minúscules.

    #!/bin/bash
    directori=$1″
    if [ -z $directori ]; aleshores
    echo Ús: $0
    sortida 1
    ser

    si [ ! -d $directori ]; aleshores

    echo Error: '$directory' no és un directori vàlid.
    sortida 1
    ser

    cd $directori || sortida 1

    per al fitxer en *; fer
    if [ -f $fitxer ]; aleshores
    nounom=$(eco $fitxer | tr ‘A-Z’ ‘a-z’)
    [ $fitxer != $nom nou ] && mv $fitxer $nom nou
    ser
    fet

    Explicació:

    1. #!/bin/bash : Aquest és el shebang, que especifica que l'script s'ha d'interpretar mitjançant l'intèrpret d'ordres Bash.
    2. directori=$1″ : Aquesta línia assigna el primer argument de la línia d'ordres al directori de variables.
    3. if [ -z $directori ]; aleshores : Aquesta línia comprova si la variable de directori està buida (no es proporciona cap argument en executar l'script).
    4. echo Ús: $0 : Si el directori està buit, aquesta línia imprimeix un missatge d'ús amb el nom de l'script ($0).
    5. sortida 1 : Aquesta línia surt de l'script amb un codi de sortida 1, que indica que s'ha produït un error.
    6. f i: Això marca el final de la primera declaració if.
    7. si [ ! -d $directori]; aleshores : Aquesta línia comprova si el directori especificat no existeix (-d prova per a un directori).
    8. echo Error: '$directory' no és un directori vàlid. : Si el directori especificat no existeix, aquesta línia imprimeix un missatge d'error.
    9. sortida 1 : surt de l'script amb un codi de sortida d'1.
    10. ser : Marca el final de la segona declaració if.
    11. cd $directori || sortida 1 : Canvia el directori de treball actual al directori especificat. Si el canvi de directori falla (p. ex., directori inexistent), l'script surt amb un codi d'error.
    12. per al fitxer en *; fer: jo per al fitxer en *; fer: inicia un bucle que itera sobre tots els elements del directori actual (* coincideix amb tots els noms de fitxer).
    13. if [ -f $fitxer ]; aleshores : Comprova si l'element d'iteració del bucle actual és un fitxer normal (-f prova per a un fitxer normal).
    14. nounom=$(eco $fitxer | tr ‘A-Z’ ‘a-z’) : Converteix el nom del fitxer actual ($fitxer) a minúscules mitjançant l'ordre tr i emmagatzema el resultat a la variable newname.
    15. [ $fitxer != $nom nou ] && mv $fitxer $nom nou : compara el nom del fitxer original amb el nou nom del fitxer en minúscules. Si són diferents, canvia el nom del fitxer mitjançant l'ordre mv.
    16. ser : Marca el final de la declaració si interna.
    17. fet : Marca el final del bucle.

    454

    Nota : Hem de proporcionar un directori com a argument en executar l'script. Aquí hem utilitzat la ruta del directori actual home/jayeshkumar/test

    27) Com podeu utilitzar operacions aritmètiques dins d'un script de shell?

    Les operacions aritmètiques es poden realitzar dins d'un script de shell utilitzant diversos mètodes integrats. L'intèrpret d'ordres proporciona mecanismes per a càlculs aritmètics simples mitjançant l'expansió aritmètica Com:

    1. Expansió aritmètica ($((…)))
    2. Utilitzant l'ordre expr
    3. Utilitzant el comandament let

    Aquí teniu el nostre script Shell que explica els tres mètodes per a operacions aritmètiques.

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

    #Expansió aritmètica ($((…)))

    resultat=$((núm1 + núm2))
    echo Suma: $resultat

    #Usant l'ordre expr

    suma=$(expr $núm1 + $núm2)
    echo Suma: $sum

    #Usant el comandament let

    siguem suma = num1 + num2
    echo Suma: $sum

    Explicació:

    1. `#!/bin/bash` : Aquest és el shebang, que especifica que l'script s'ha d'interpretar mitjançant l'intèrpret d'ordres Bash.
    2. `núm1=10` i ` num2=5` : Aquestes línies assignen els valors 10 i 5 a les variables ` num1 ` i ` num2 `, respectivament.
    3. `#Expansió aritmètica ($((…)))` : Aquest és un comentari que indica l'inici de la secció que demostra l'expansió aritmètica.
    4. `resultat=$((núm1 + núm2))` : Aquesta línia utilitza l'expansió aritmètica per calcular la suma de ` núm1 ` i ` num2 ` i emmagatzema el resultat al fitxer ` resultat ` variable.
    5. `echo Sum: $resultat` : Aquesta línia imprimeix la suma calculada utilitzant el valor emmagatzemat al ` resultat ` variable.
    6. `#Usant l'ordre expr` : Aquest és un comentari que indica l'inici de la secció que demostra l'ús del ` expr ` ordre per a operacions aritmètiques.
    7. `suma=$(expr $núm1 + $núm2)` : Aquesta línia utilitza el ` expr ` ordre per calcular la suma de ` núm1 ` i ` num2 ` i emmagatzema el resultat al fitxer ` suma ` variable. Tingueu en compte que el ` expr L'ordre ` requereix espais al voltant dels operadors.
    8. `echo Sum: $sum` : Aquesta línia imprimeix la suma calculada utilitzant el valor emmagatzemat al ` suma ` variable.
    9. `#Usant l'ordre let` : Aquest és un comentari que indica l'inici de la secció que demostra l'ús del ` deixar ` ordre per a operacions aritmètiques.
    10. `deixar suma = num1 + num2″` : Aquesta línia utilitza el ` deixar ` ordre per calcular la suma de ` núm1 ` i ` num2 ` i assigna el resultat a ` suma ` variable. El ` deixar L'ordre ` no requereix espais al voltant dels operadors.
    11. `echo Sum: $sum` : Aquesta línia imprimeix la suma calculada utilitzant el valor emmagatzemat al ` suma ` variable.
    aritmètica

    aritmètica

    28) Creeu un script que comprovi si es pot accedir a un host de xarxa.

    Aquí hi ha un script d'intèrpret d'ordres senzill que utilitza l'ordre ping per comprovar si es pot accedir a un host de xarxa:

    #!/bin/bash
    amfitrió=$1″
    if [ -z $amfitrió ]; aleshores
    echo Ús: $0
    sortida 1
    ser
    ping -c 4 $host

    si [ $? -eq 0]; aleshores
    echo $host és accessible.
    altra cosa
    echo $host no és accessible.
    ser

    Explicació:

    1. Pren un nom d'amfitrió o una adreça IP com a argument i comprova si es proporciona l'argument.
    2. Si no es proporciona cap argument, mostra un missatge d'ús i surt.
    3. Utilitza l'ordre ping amb l'opció -c 4 per enviar quatre sol·licituds d'eco ICMP a l'amfitrió especificat.
    4. Després d'executar l'ordre ping, comprova l'estat de sortida ($?). Si l'estat de sortida és 0, vol dir que l'amfitrió és accessible i l'script imprimeix un missatge d'èxit. En cas contrari, imprimeix un missatge d'error.

    456

    Nota : Hem de proporcionar un nom d'amfitrió com a argument quan executem l'script. Aquí hem utilitzat google.com

    29) Escriu un script de Shell per trobar l'element més gran d'una matriu:

    Aquí hi ha un script de shell per trobar l'element més gran d'una matriu.

    #!/bin/bash
    # Declarar una matriu
    matriu=(3 56 24 89 67)

    # Inicialitzeu una variable per emmagatzemar el valor màxim, començant pel primer element

    max=${array[0]}

    # Iterar per la matriu

    per num a ${array[@]}; fer

    # Compara cada element amb el màxim actual

    si ((número> màxim)); aleshores
    màxim=$núm
    ser
    fet

    # Imprimeix el valor màxim

    echo L'element màxim de la matriu és: $max

    Explicació:

    1. ` #!/bin/bash `: La línia shebang especifica que l'script s'ha d'interpretar mitjançant l'intèrpret d'ordres Bash.
    2. ` matriu=(3 56 24 89 67) `: La matriu es declara i s'inicia amb valors.
    3. ` max=${array[0]} `: `max` s'inicialitza amb el primer element de la matriu.
    4. ` per num a ${array[@]}; fer `: Un bucle `for` s'utilitza per iterar pels elements de la matriu.
    5. ` si ((número> màxim)); aleshores `: Una instrucció `if` verifica si l'element actual `num` és més gran que el màxim actual `max`.
    6. ` max=$num`: Si`núm ` és més gran que `max`, `max` s'actualitza amb el valor de num.
    7. ` fet `: El bucle `for` està tancat.
    8. ` echo L'element màxim de la matriu és: $max `: Finalment, l'script imprimeix el valor màxim trobat a la matriu.
    461

    nombre més gran

    30) Escriu un guió per calcular la suma dels elements d'una matriu.

    #!/bin/bash

    # Declarar una matriu

    matriu=(1 65 22 19 94)

    # Inicialitzar una variable per emmagatzemar la suma

    suma=0

    # Iterar per la matriu i afegir cada element a la suma

    per num a ${array[@]}; fer
    am=$((am + am))
    fet

    # Imprimeix la suma

    echo La suma d'elements de la matriu és: $sum

    Explicació:

    ` #!/bin/bash `: La línia shebang especifica que l'script s'ha d'interpretar mitjançant l'intèrpret d'ordres Bash.

    ` matriu=(1 65 22 19 94) `: La matriu es declara i s'inicia amb valors.

    ` suma=0 `: ` suma ` s'inicia a zero per contenir la suma d'elements.

    ` per num a ${array[@]}; fer `: A` per ` bucle s'utilitza per iterar a través dels elements de la matriu.

    ` am=$((am + am)) `: Dins del bucle, cada element ` en una ` s'afegeix al ` suma ` variable.

    ` fet `: El ` per ` el bucle està tancat.

    `echo La suma d'elements de la matriu és: $sum`: Finalment, l'script imprimeix la suma de tots els elements de la matriu.

    462

    Suma d'elements

    Més informació sobre els scripts de Shell

    Conclusió

    Tots els geeks sabem que el shell script és molt útil per augmentar la productivitat del treball i també per estalviar temps. Per tant, en aquest article hem tractat 30 exemples de scripts d'intèrpret d'ordres molt útils i la majoria d'estafadors . Esperem que aquesta guia completa sobre l'exemple de shell script us ajudi a entendre tot sobre els shell scripts.



    ).
  5. sortida 1 : Aquesta línia surt de l'script amb un codi de sortida 1, que indica que s'ha produït un error.
  6. f i: Això marca el final de la primera declaració if.
  7. si [ ! -d $directori]; aleshores : Aquesta línia comprova si el directori especificat no existeix (-d prova per a un directori).
  8. echo Error: '$directory' no és un directori vàlid. : Si el directori especificat no existeix, aquesta línia imprimeix un missatge d'error.
  9. sortida 1 : surt de l'script amb un codi de sortida d'1.
  10. ser : Marca el final de la segona declaració if.
  11. cd $directori || sortida 1 : Canvia el directori de treball actual al directori especificat. Si el canvi de directori falla (p. ex., directori inexistent), l'script surt amb un codi d'error.
  12. per al fitxer en *; fer: jo per al fitxer en *; fer: inicia un bucle que itera sobre tots els elements del directori actual (* coincideix amb tots els noms de fitxer).
  13. if [ -f $fitxer ]; aleshores : Comprova si l'element d'iteració del bucle actual és un fitxer normal (-f prova per a un fitxer normal).
  14. nounom=$(eco $fitxer | tr ‘A-Z’ ‘a-z’) : Converteix el nom del fitxer actual ($fitxer) a minúscules mitjançant l'ordre tr i emmagatzema el resultat a la variable newname.
  15. [ $fitxer != $nom nou ] && mv $fitxer $nom nou : compara el nom del fitxer original amb el nou nom del fitxer en minúscules. Si són diferents, canvia el nom del fitxer mitjançant l'ordre mv.
  16. ser : Marca el final de la declaració si interna.
  17. fet : Marca el final del bucle.

454

Nota : Hem de proporcionar un directori com a argument en executar l'script. Aquí hem utilitzat la ruta del directori actual home/jayeshkumar/test

27) Com podeu utilitzar operacions aritmètiques dins d'un script de shell?

Les operacions aritmètiques es poden realitzar dins d'un script de shell utilitzant diversos mètodes integrats. L'intèrpret d'ordres proporciona mecanismes per a càlculs aritmètics simples mitjançant l'expansió aritmètica Com:

  1. Expansió aritmètica ($((…)))
  2. Utilitzant l'ordre expr
  3. Utilitzant el comandament let

Aquí teniu el nostre script Shell que explica els tres mètodes per a operacions aritmètiques.

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

#Expansió aritmètica ($((…)))

resultat=$((núm1 + núm2))
echo Suma: $resultat

#Usant l'ordre expr

suma=$(expr $núm1 + $núm2)
echo Suma: $sum

#Usant el comandament let

siguem suma = num1 + num2
echo Suma: $sum

Explicació:

  1. `#!/bin/bash` : Aquest és el shebang, que especifica que l'script s'ha d'interpretar mitjançant l'intèrpret d'ordres Bash.
  2. `núm1=10` i ` num2=5` : Aquestes línies assignen els valors 10 i 5 a les variables ` num1 ` i ` num2 `, respectivament.
  3. `#Expansió aritmètica ($((…)))` : Aquest és un comentari que indica l'inici de la secció que demostra l'expansió aritmètica.
  4. `resultat=$((núm1 + núm2))` : Aquesta línia utilitza l'expansió aritmètica per calcular la suma de ` núm1 ` i ` num2 ` i emmagatzema el resultat al fitxer ` resultat ` variable.
  5. `echo Sum: $resultat` : Aquesta línia imprimeix la suma calculada utilitzant el valor emmagatzemat al ` resultat ` variable.
  6. `#Usant l'ordre expr` : Aquest és un comentari que indica l'inici de la secció que demostra l'ús del ` expr ` ordre per a operacions aritmètiques.
  7. `suma=$(expr $núm1 + $núm2)` : Aquesta línia utilitza el ` expr ` ordre per calcular la suma de ` núm1 ` i ` num2 ` i emmagatzema el resultat al fitxer ` suma ` variable. Tingueu en compte que el ` expr L'ordre ` requereix espais al voltant dels operadors.
  8. `echo Sum: $sum` : Aquesta línia imprimeix la suma calculada utilitzant el valor emmagatzemat al ` suma ` variable.
  9. `#Usant l'ordre let` : Aquest és un comentari que indica l'inici de la secció que demostra l'ús del ` deixar ` ordre per a operacions aritmètiques.
  10. `deixar suma = num1 + num2″` : Aquesta línia utilitza el ` deixar ` ordre per calcular la suma de ` núm1 ` i ` num2 ` i assigna el resultat a ` suma ` variable. El ` deixar L'ordre ` no requereix espais al voltant dels operadors.
  11. `echo Sum: $sum` : Aquesta línia imprimeix la suma calculada utilitzant el valor emmagatzemat al ` suma ` variable.
aritmètica

aritmètica

28) Creeu un script que comprovi si es pot accedir a un host de xarxa.

Aquí hi ha un script d'intèrpret d'ordres senzill que utilitza l'ordre ping per comprovar si es pot accedir a un host de xarxa:

#!/bin/bash
amfitrió=″
if [ -z $amfitrió ]; aleshores
echo Ús:

Per a totes les distribucions de Linux, l'script shell és com una vareta màgica que automatitza el procés, estalvia temps als usuaris i augmenta la productivitat. Aquest tutorial de scripting us introduirà als 25 exemples de scripting.

Però abans de passar al tema de shell scripting Per exemple, entenem l'script d'intèrpret d'ordres i els casos d'ús reals de l'script d'intèrpret d'ordres.

Què és Shell Script?

Bé, la closca és una CLI ( intèrpret de línia d'ordres ), que s'executa en una finestra de text on els usuaris poden gestionar i executar ordres de shell. D'altra banda, el procés d'escriure un conjunt d'ordres que s'executaran en un sistema Linux Un fitxer que inclou aquestes instruccions s'anomena script bash.

Usos dels scripts de Shell

A continuació es mostren alguns usos habituals de Shell Script:

  • Automatització de tasques – Es pot utilitzar per automatitzar tasques repetitives com ara còpies de seguretat habituals i tasques d'instal·lació de programari.
  • Personalització - Es pot utilitzar scripts d'intèrpret d'ordres per dissenyar el seu entorn de línia d'ordres i realitzar fàcilment la seva tasca segons les necessitats.
  • Gestió de fitxers - Els scripts d'intèrpret d'ordres també es poden utilitzar per gestionar i manipular fitxers i directoris, com ara moure, copiar, canviar el nom o suprimir fitxers.

Exemples de script de Shell a Linux

1) Què indica el shebang (#!) al començament d'un script de shell?

El shebang (#!) al principi d'un script indica l'intèrpret que s'ha d'utilitzar per executar l'script. Indica al sistema quin shell o intèrpret ha d'interpretar les ordres de l'script.

Per exemple: Suposem que tenim un script anomenat myscript.sh escrit a l'intèrpret d'ordres Bash:

shebang

shebang

En aquest exemple:

  • El #!/bin/bash al començament de l'script indica que l'script s'ha d'interpretar mitjançant l'intèrpret d'ordres Bash.
  • Les ordres d'eco s'utilitzen per imprimir missatges al terminal.

2) Com executeu un script de shell des de la línia d'ordres?

Per executar un script de shell des de la línia d'ordres, hem de seguir aquests passos:

  • Assegureu-vos que el fitxer d'script tingui permisos executables mitjançant l' comanda chmod :
chmod +x myscript.sh>
  • Executeu l'script utilitzant el seu nom de fitxer:
./myscript.sh>

Aquí has ​​de substituir myscrtipt.sh amb el nom d'escriptura anterior.

3) Escriviu un script d'intèrpret d'ordres que imprimeixi techcodeview.com al terminal.

Creeu un nom d'script `myscript.sh` (estem utilitzant ` perquè ` editor, podeu triar qualsevol editor)

vim myscript.sh>

#!/bin/bash
# Aquest script imprimeix techcodeview.com al terminal
echo techcodeview.com

Nom d'impressió

Nom d'impressió

Fem que el nostre script sigui executable utilitzant `chmod +x` i després executem amb `./myscipt.sh` i obtenim la nostra sortida desitjada techcodeview.com.

4) Expliqueu el propòsit de l'ordre echo en els scripts de shell.

El comanda d'eco s'utilitza per mostrar text o variables al terminal. S'utilitza habitualment per imprimir missatges, valors variables i generar resultats del programa.

434

comanda d'eco

En aquest exemple hem executat `echo` directament al terminal, ja que funciona igual dins de l'script de shell.

5) Com es pot assignar un valor a una variable en un script de shell?

Les variables s'assignen valors mitjançant l'operador d'assignació =.

Per exemple:

#!/bin/bash
# Assignació d'un valor a una variable
nom=Jayesh
edat = 21
echo $nom $edat

Explicació:

  • A la variable de nom se li assigna el valor Jayesh.
  • A la variable edat se li assigna el valor 21.
  • echo s'utilitza per imprimir i `$name` `$age` s'utilitza per cridar el valor emmagatzemat a les variables.

435

6) Escriu un script de shell que prengui el nom d'un usuari com a entrada i el saludi.

Creeu un nom d'script `example.sh`.

#!/bin/bash
# Demaneu el seu nom a l'usuari
echo Com et dius?
llegir el nom
# Saludeu l'usuari
echo Hola, $name! Encantat de conèixer-te.

Explicació:

  • #!/bin/bash: aquesta és la línia shebang. Indica al sistema que utilitzi l'intèrpret Bash per executar l'script.
  • # Demaneu el seu nom a l'usuari: Això és un comentari. Proporciona context sobre el codi proper. Els comentaris són ignorats per l'intèrpret.
  • echo Com et dius?: L'ordre echo s'utilitza per mostrar el text entre cometes dobles al terminal.
  • read name: l'ordre read espera que l'usuari introdueixi text i l'emmagatzema al nom de la variable.
  • echo Hola, $name! Encantat de conèixer-te.: Aquesta línia utilitza l'ordre echo per imprimir un missatge de salutació que inclou el valor de la variable de nom, que es va recopilar de l'entrada de l'usuari.

436

7) Com s'afegeixen comentaris a un script de shell?

Comentaris en shell script s'utilitzen per proporcionar explicacions o context al codi. L'intèrpret els ignora i només estan pensats per als humans que llegeixen el guió. Podeu afegir comentaris amb el símbol #.

#!/bin/bash
# Aquest és un comentari que explica el propòsit del guió
eco gfg

8) Creeu un script d'intèrpret d'ordres que comprovi si existeix un fitxer al directori actual.

Aquí hi ha un script que verifica si un fitxer anomenat example.txt existeix al directori actual:

#!/bin/bash
fitxer=exemple.txt
# Comproveu si el fitxer existeix
if [ -e $fitxer ]; aleshores
echo El fitxer existeix: $fitxer
altra cosa
echo No s'ha trobat el fitxer: $fitxer
ser

Explicació:

  1. #!/bin/bash: Aquesta és la línia shebang que especifica l'intèrpret (/bin/bash) que s'utilitzarà per executar l'script.
  2. file=example.txt: aquesta línia defineix el fitxer variable i li assigna el valor example.txt. Podeu substituir-lo pel nom del fitxer que voleu comprovar.
  3. if [ -e $fitxer ]; then: Aquesta línia comença una sentència if. La condició [ -e $fitxer ] comprova si el fitxer especificat pel valor de la variable de fitxer existeix. El senyalador -e s'utilitza per comprovar l'existència de fitxers.
  4. echo El fitxer existeix: $fitxer: si la condició és certa (és a dir, el fitxer existeix), aquesta línia imprimeix un missatge que indica que el fitxer existeix, juntament amb el nom del fitxer.
  5. else: si la condició és falsa (és a dir, el fitxer no existeix), l'script executa el codi a la branca else.
  6. echo No s'ha trobat el fitxer: $fitxer: aquesta línia imprimeix un missatge d'error que indica que no s'ha trobat el fitxer especificat, juntament amb el nom del fitxer.
  7. fi: Aquesta línia marca el final de la instrucció if.
Trobar fitxer

Trobar fitxer

9) Quina diferència hi ha entre cometes simples (‘) i cometes dobles () en els scripts de shell?

Les cometes simples (‘) i les cometes dobles () s'utilitzen per incloure cadenes en els scripts d'intèrpret d'ordres, però tenen comportaments diferents:

  • Cometes simples: tot el que hi ha entre cometes simples es tracta com una cadena literal. Els noms de variables i la majoria de caràcters especials no s'amplien.
  • Cometes dobles: s'amplien les variables i certs caràcters especials dins de cometes dobles. Els continguts estan subjectes a substitució de variables i substitució d'ordres.

#!/bin/bash

abcd=Hola
echo ‘$abcd’ # Sortida: $abcd
echo $abcd # Sortida: Hola

10) Com podeu utilitzar arguments de línia d'ordres en un script de shell?

Arguments de la línia d'ordres són valors proporcionats a un script quan s'executa. S'hi pot accedir dins de l'script mitjançant variables especials com $1, $2, etc., on $1 representa el primer argument, $2 representa el segon argument, etc.

Per exemple: Si el nostre nom d'script a `example.sh`

#!/bin/bash

echo Nom de l'script: $0
echo Primer argument: $1
echo Segon argument: $2

Si executem l'script amb `.example.sh hello_1 hello_2`, sortirà:

cli arguments

cli arguments

11) Com s'utilitza el bucle for per recórrer una llista de valors?

Creeu un nom d'script `example.sh`.

#!/bin/bash

fruites=(data de cirera poma i plàtan)
per a fruites a ${fruits[@]}; fer
echo Fruita actual: $fruit
fet

Explicació:

La línia `fruits=` crea una matriu anomenada fruites amb quatre elements: poma, plàtan, cirera i dàtil.

  • per a fruites a ${fruits[@]}; do: aquesta línia comença un bucle for. Aquí teniu el significat de cada part:
  • for fruit: declara una variable de bucle anomenada fruit. En cada iteració del bucle, fruit mantindrà el valor de l'element actual de la matriu de fruites.
  • ${fruits[@]}: aquesta és una expansió de matriu que pren tots els elements de la matriu de fruites. La sintaxi ${…} garanteix que cada element es tracti com un element separat.
  • do: aquesta paraula clau marca l'inici del cos del bucle.
  • echo Fruit actual: $fruit: Dins del bucle, aquesta línia utilitza l'ordre echo per mostrar el valor actual de la variable de bucle fruit. Imprimeix un missatge com ara Fruit actual: poma per a cada fruita de la matriu.
  • fet: aquesta paraula clau marca el final del cos del bucle. Indica a l'script que el bucle ha acabat.
per bucle

per bucle

12) Escriu un script d'intèrpret d'ordres que calculi la suma dels nombres enters d'1 a N mitjançant un bucle.

Creeu un nom d'script `example.sh`.

#!/bin/bash

echo Introduïu un número (N):
llegir N
suma=0
per (( i=1; i<=$N; i++ )); fer
suma=$((suma + i))
fet
echo La suma dels nombres enters d'1 a $N és: $sum

Explicació:
L'script comença demanant-vos que introduïu un número (N) mitjançant la lectura. Aquest número determinarà quantes vegades s'executa el bucle.

  1. La variable suma s'inicialitza a 0. Aquesta variable farà un seguiment de la suma dels nombres enters.
  2. El bucle for comença amb for (( i=1; i<=$N; i++ )). Aquesta estructura de bucle s'utilitza per repetir un conjunt d'accions un nombre determinat de vegades, en aquest cas, des d'1 fins al valor de N.
  3. Dins del bucle, passen aquestes coses:
    • i=1 estableix la variable de bucle i a 1 al començament de cada iteració.
    • La condició de bucle i<=$N comprova si i encara és menor o igual que el nombre donat N.
    • Si la condició és certa, el cos del bucle s'executa.
    • sum=$((suma + i)) calcula el nou valor de suma afegint-hi el valor actual de i. Això suma els nombres enters de 1 al valor i actual.
  4. Després de cada iteració, i++ augmenta el valor de i en 1.
  5. El bucle continua funcionant fins que la condició i<=$N esdevé falsa (quan i és més gran que N).
  6. Un cop finalitza el bucle, l'script mostra la suma dels nombres enters des de l'1 fins al número introduït N.

439

13) Creeu un script que cerqui una paraula específica en un fitxer i compta les seves ocurrències.

Creeu un nom d'script `word_count.sh`

#!/bin/bash

echo Introduïu la paraula per cercar:
llegir paraula_destinació
echo Introduïu el nom del fitxer:
llegir el nom del fitxer
count=$(grep -o -w $paraula_objectiu $nomfitxer | wc -l)
echo La paraula '$target_word' apareix $count times a '$filename'.

Explicació:

  • echo Introduïu la paraula a cercar:: Aquesta línia mostra un missatge demanant a l'usuari que introdueixi una paraula que vol cercar en un fitxer.
  • read target_word: Aquesta línia llegeix l'entrada proporcionada per l'usuari i l'emmagatzema en una variable anomenada target_word.
  • echo Introduïu el nom del fitxer:: Aquesta línia mostra un missatge demanant a l'usuari que introdueixi el nom del fitxer en què vol cercar.
  • llegir nom de fitxer: aquesta línia llegeix l'entrada proporcionada per l'usuari i l'emmagatzema en una variable anomenada nom de fitxer.
  • count=$(grep -o -w $target_word $filename | wc -l): Aquesta línia fa el treball principal de l'script. Anem a desglossar-ho més:
    • grep -o -w $target_word $filename: aquesta part de l'ordre cerca les ocurrències de la paraula_destinació al nom de fitxer especificat. Les opcions -o i -w asseguren que només es compten les coincidències de paraules senceres.
    • |: Aquesta és una canalització, que pren la sortida de l'ordre anterior i l'envia com a entrada a l'ordre següent.
    • wc -l: aquesta part de l'ordre utilitza l'ordre wc per comptar el nombre de línies de l'entrada. L'opció -l compta específicament les línies.
    • L'ordre sencera calcula el recompte d'ocurrències de la paraula_destinació al fitxer i assigna aquest recompte a la variable count

441

14) Expliqueu les diferències entre la sortida estàndard (stdout) i l'error estàndard (stderr).

La diferència principal entre la sortida estàndard (stdout) i l'error estàndard (stderr) és la següent:

  • Sortida estàndard (stdout): Aquest és el flux de sortida predeterminat on va la sortida normal d'una ordre. Es mostra al terminal de manera predeterminada. Podeu redirigir-lo a un fitxer mitjançant>.
  • Error estàndard (stderr): Aquest és el flux de sortida dels missatges d'error i advertències. També es mostra al terminal de manera predeterminada. Podeu redirigir-lo a un fitxer mitjançant 2>.

15) Expliqueu el concepte de sentències condicionals en shell scripting.

Declaracions condicionals en scripts de shell ens permeten prendre decisions i controlar el flux del nostre guió en funció de determinades condicions. Permeten que el nostre script executi diferents conjunts d'ordres depenent de si una condició concreta és certa o falsa. Les sentències condicionals primàries en els scripts d'intèrpret d'ordres són la sentència if, la sentència elif (opcional) i la sentència else (opcional).

A continuació, es mostra l'estructura bàsica d'una instrucció condicional en scripts de shell:

si [condició]; aleshores
# Ordres per executar si la condició és certa
elif [una altra_condició]; aleshores
# Ordres per executar si una altra_condició és certa (opcional)
altra cosa
# Ordres per executar si cap de les condicions és certa (opcional)
ser

Explicació:

  • [condició] = Ordre que avalua la condició i retorna un estat de sortida veritable (0) o fals (no zero).
  • then = És una paraula clau que indica que les ordres que la segueixen s'executaran si la condició s'avalua com a vertadera.
  • elif = (abreviatura de else if) És una secció que ens permet especificar condicions addicionals per comprovar.
  • else = és una secció que conté ordres que s'executaran si cap de les condicions és certa.
  • fi = És una paraula clau que marca el final del bloc condicional.

16) Com llegiu les línies d'un fitxer dins d'un script de shell?

A llegir línies des d'un fitxer dins d'un script d'intèrpret d'ordres, podem utilitzar diversos mètodes, però un enfocament comú és utilitzar un bucle while en combinació amb l'ordre read. Així és com ho podem fer:

#!/bin/bash
fitxer=/home/jayeshkumar/jayesh.txt
# Comproveu si el fitxer existeix
if [ -e $fitxer ]; aleshores
mentre que IFS= llegeix la línia -r; fer
echo Line read: $line
# Afegiu aquí la vostra lògica de processament
fet <$fitxer
altra cosa
echo No s'ha trobat el fitxer: $fitxer
ser

Explicació:

  1. #!/bin/bash: Aquesta és la línia shebang que especifica l'intèrpret (/bin/bash) que s'utilitzarà per executar l'script.
  2. file=/home/jayeshkumar/jayesh.txt: aquesta línia defineix el fitxer variable i assigna el camí complet al fitxer jayesh.txt al directori /home/jayeshkumar. Canvieu aquest camí perquè coincideixi amb el camí real del fitxer que voleu llegir.
  3. if [ -e $fitxer ]; then: Aquesta línia comença una sentència if. Comprova si el fitxer especificat per la variable $file existeix. El senyalador -e comprova l'existència del fitxer.
  4. mentre que IFS= llegeix la línia -r; do: aquesta línia inicia un bucle while que llegeix les línies del fitxer.
    • IFS=: l'IFS (Internal Field Separator) s'estableix en un valor buit per preservar els espais inicials i finals.
    • read -r line: llegeix la línia actual del fitxer i l'emmagatzema a la línia variable.
  5. echo Line read: $line: Aquesta línia imprimeix el contingut de la línia que s'ha llegit del fitxer. La variable $line conté el contingut de la línia actual.
  6. # Afegiu la vostra lògica de processament aquí: aquest és un comentari de marcador de posició on podeu afegir la vostra pròpia lògica per processar cada línia. Per exemple, podeu analitzar la línia, extreure informació o realitzar accions específiques basades en el contingut.
  7. done <$file: Això marca el final del bucle while. El < $file redirigeix ​​el contingut del fitxer per ser llegit pel bucle.
  8. else: si el fitxer no existeix (la condició de la instrucció if és falsa), l'script executa el codi a la branca else.
  9. echo No s'ha trobat el fitxer: $fitxer: aquesta línia imprimeix un missatge d'error que indica que no s'ha trobat el fitxer especificat.
  10. fi: Aquesta línia marca el final de la instrucció if.
fitxer de lectura

fitxer de lectura

Aquí hem utilitzat ` pwd ` comanda per obtenir la ruta del directori actual.

17) Escriu una funció en un script de shell que calculi el factorial d'un nombre donat.

Aquí teniu el guió quecalcula el factoriald'un nombre donat.

#!/bin/bash
# Definiu una funció per calcular factorial
calcula_factorial() {
num=$1
fet = 1
per ((i=1; i<=núm; i++)); fer
fet=$((fet * i))
fet
echo $fet
}
# Demaneu a l'usuari que introdueixi un número
echo Introduïu un número:
llegir input_num
# Truqueu a la funció calculate_factorial amb el número d'entrada
factor_result=$(calcular_factorial $núm_entrada)
# Mostra el resultat factorial
echo El factor de $núm_entrada és: $resultat_factorial

Explicació:

  1. L'script comença amb la línia shebang #!/bin/bash per especificar l'intèrpret.
  2. calculate_factorial() es defineix com una funció. Es necessita un argument, num, que és el nombre pel qual s'ha de calcular el factorial.
  3. Dins de la funció, fact s'inicialitza a 1. Aquesta variable emmagatzemarà el resultat factorial.
  4. El bucle for itera des de l'1 fins al nombre donat (num). En cada iteració, multiplica el valor actual de fet per l'índex de bucle i.
  5. Un cop finalitzat el bucle, la variable de fet conté el factorial calculat.
  6. L'script demana a l'usuari que introdueixi un número mitjançant la lectura.
  7. La funció calculate_factorial es crida amb el número proporcionat per l'usuari i el resultat s'emmagatzema a la variable factorial_result.
  8. Finalment, l'script mostra el resultat factorial calculat.
Factorial

Factorial

18) Com gestioneu senyals com Ctrl + C en un script de shell?

En un script d'intèrpret d'ordres, podeu gestionar senyals com Ctrl+C (també conegut com SIGINT) mitjançant l'ordre trap. Ctrl+C genera un senyal SIGINT quan l'usuari el prem per interrompre l'script o programa en execució. Mitjançant l'ordre trap, podeu especificar les accions que cal dur a terme quan es rep un senyal concret. A continuació s'explica com gestioneu senyals com Ctrl+C en un script de shell:

#!/bin/bash
netejar() {
echo Script interromput. S'està fent la neteja...
# Afegeix aquí les teves accions de neteja
sortida 1
}
# Configureu una trampa per trucar a la funció de neteja quan es rebi Ctrl+C (SIGINT).
neteja de paranys SIGINT
# La resta del vostre guió
echo Corrent...
dormir 10
eco Acabat.

El maneig dels senyals és important per fer que els scripts siguin robusts i assegurar-se que gestionen les interrupcions inesperades amb gràcia. Podeu personalitzar la funció de neteja perquè s'ajusti a les vostres necessitats específiques, com ara tancar fitxers, aturar processos o registrar informació abans que surti l'script.

Explicació:

  1. #!/bin/bash: aquesta línia shebang especifica l'intèrpret que s'utilitzarà per executar l'script.
  2. cleanup() { … }: Això defineix una funció anomenada cleanup. Dins d'aquesta funció, podeu incloure qualsevol acció que s'hagi de realitzar quan s'interromp l'script, com ara tancar fitxers, alliberar recursos o realitzar altres tasques de neteja.
  3. trap cleanup SIGINT: l'ordre trap s'utilitza per configurar un controlador de senyal. En aquest cas, especifica que quan es rep el senyal SIGINT (Ctrl+C), s'ha d'executar la funció de neteja.
  4. echo Running..., sleep 10, echo Finished.: Són només ordres d'exemple per simular l'execució d'un script.

446

19) Creeu un script que cerqui i elimineu les línies duplicades en un fitxer de text.

Aquí teniu el nostre guió de Linux en el qual eliminarem les línies duplicades d'un fitxer de text.

#!/bin/bash
fitxer_entrada=input.txt
fitxer_output=output.txt
ordena $fitxer_entrada | uniq> $fitxer_sortida
echo Les línies duplicades s'han eliminat correctament.

Explicació:

  1. L'script comença amb un shebang (#!/bin/bash), que indica que l'script s'ha d'interpretar mitjançant l'intèrpret d'ordres Bash.
  2. La variable input_file s'estableix amb el nom del fitxer d'entrada que conté línies duplicades (canvieu-ho pel nom del fitxer d'entrada real).
  3. La variable output_file s'estableix amb el nom del fitxer de sortida on s'eliminaran els duplicats (canvieu-ho pel nom del fitxer de sortida desitjat).
  4. L'script utilitza l'ordre sort per ordenar les línies del fitxer d'entrada. L'ordenació de les línies garanteix que les línies duplicades s'agrupin.
  5. A continuació, les línies ordenades es passen per l'ordre uniq, que elimina les línies duplicades consecutives. La sortida d'aquest procés es redirigeix ​​al fitxer de sortida.
  6. Després d'eliminar els duplicats, l'script imprimeix un missatge d'èxit.
eliminació de línies duplicades

eliminació de línies duplicades

Aquí, fem servir ` gat ` per mostrar el text dins del fitxer de text.

20) Escriu un script que generi una contrasenya aleatòria segura.

Aquí teniu el nostre script per generar una contrasenya aleatòria segura.

#!/bin/bash
# Funció per generar una contrasenya aleatòria
genera_contrasenya() {
tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
}
# Truqueu a la funció i emmagatzemeu la contrasenya generada
contrasenya=$(genera_contrasenya)
echo Contrasenya generada: $contrasenya

Nota: En conseqüència, l'usuari pot canviar la longitud de la contrasenya substituint el número '12'.

Explicació:

  1. L'script comença amb un shebang (#!/bin/bash), que indica que s'ha d'interpretar mitjançant l'intèrpret d'ordres Bash.
  2. La funció generate_password està definida per generar una contrasenya aleatòria. Així és com funciona:
    • tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
    • fold -w 12 divideix les dades aleatòries filtrades en línies d'amplada de 12 caràcters cadascuna.
    • head -n 1 selecciona la primera línia, donant-nos efectivament una seqüència aleatòria de caràcters de longitud 12.
  3. La variable de contrasenya s'assigna el resultat de cridar la funció generate_password.
  4. Finalment, la contrasenya generada es mostra amb echo.

448

21) Escriviu un script de shell que calculi la mida total de tots els fitxers d'un directori.

Aquí hi ha un script de shell per calcular la mida total de tots els fitxers d'un directori.

#!/bin/bash
directori=/camí/al/teu/directori
total_size=$(du -csh $directori | grep total | awk '{print $1}')
echo Mida total dels fitxers a $directory: $total_size

Explicació:

  1. L'script comença amb #!/bin/bash shebang, que indica que s'ha d'interpretar mitjançant l'intèrpret d'ordres Bash.
  2. La variable de directori s'estableix a la ruta del directori per al qual voleu calcular la mida total del fitxer. Substituïu /path/to/your/directory pel camí real.
  3. L'ordre du s'utilitza per estimar l'ús d'espai de fitxers. Les opcions utilitzades són:
    • -c: Produeix un gran total.
    • -s: Mostra només la mida total del directori especificat.
    • -h: mides d'impressió en un format llegible per persones (p. ex., KB, MB, GB).
  4. La sortida de du s'envia a grep total per filtrar la línia que conté la mida total.
  5. awk '{print $1}' s'utilitza per extreure el primer camp (mida total) de la línia.
  6. La mida total calculada s'emmagatzema a la variable total_size.
  7. Finalment, l'script mostra la mida total mitjançant echo.
Mida total dels fitxers

Mida total dels fitxers

Aquí hem utilitzat ` pwd ` per veure la ruta del directori actual.

22) Expliqueu la diferència entre les declaracions if i elif en els scripts d'intèrpret d'ordres.

Característica `si`Staiftement Declaració 'elif'.
Propòsit Expliqueu la diferència entre les declaracions if i elif en els scripts de shell. Proporciona condicions alternatives per comprovar quan la condició inicial si és falsa.
ús S'utilitza per a la condició inicial. S'utilitza després de la condició si inicial per comprovar condicions addicionals.
nombre de blocs Només pot tenir un bloc si. Pot tenir diversos blocs elif, però només un altre bloc (opcional).
Execució Executa el bloc de codi associat a la instrucció if si la condició és certa. Si la condició és falsa, s'executa el bloc else (si està present) (opcional). Comprova cada condició elif en ordre. Si una condició elif és certa, s'executa el bloc de codi corresponent i l'script surt de tot el bloc condicional. Si cap de les condicions elif és certa, s'executa el bloc else (si està present).
Estructures imbricades Es pot imbricar dins d'altres blocs if, elif o else. No es pot niuar dins d'un altre bloc elif, però es pot utilitzar dins d'un bloc if o else.

Entenem-ho amb un exemple.

#!/bin/bash
nombre=5
if [ $número -gt 10 ]; aleshores
echo $número és més gran que 10
altra cosa
echo $número no és més gran que 10
ser
eco ———
if [ $número -gt 10 ]; aleshores
echo $número és més gran que 10
elif [ $número -eq 10 ]; aleshores
echo $número és igual a 10
altra cosa
echo $número és inferior a 10
ser

Explicació:

En aquest exemple, el primer bloc if comprova si el nombre és més gran que 10. Si no, imprimeix un missatge que indica que el nombre no és superior a 10. El segon bloc amb declaracions elif verifica múltiples condicions seqüencialment fins que una d'elles és certa. En aquest cas, com que el valor del nombre és 5, la sortida serà:

if_elif diferència

if_elif diferència

23) Com s'utilitza un bucle while per executar ordres repetidament?

Un bucle while s'utilitza en els scripts d'intèrpret d'ordres per executar repetidament un conjunt d'ordres sempre que una condició especificada sigui certa. El bucle continua executant les ordres fins que la condició esdevé falsa.

Aquí teniu la sintaxi bàsica d'un bucle while:

mentre que [condició]; fer
# Ordres a executar
fet

Explicació:

  1. El bucle `while` comença amb la paraula clau `while` seguida d'una condició entre claudàtors `[ ]`.
  2. El cos del bucle, que conté les ordres que s'han d'executar, es troba dins de les paraules clau 'do' i 'fet'.
  3. El bucle comprova primer la condició. Si la condició és certa, s'executen les ordres dins del cos del bucle. Un cop s'executa el cos del bucle, la condició es torna a comprovar i el procés es repeteix fins que la condició esdevé falsa.

Exemple: Si volem imprimir números de l'1 al 5

#!/bin/bash
comptador=1
mentre que [ $comptador -le 5 ]; fer
echo Number: $comptador
comptador=$((comptador + 1))
fet

Explicació:

  • La variable del comptador s'estableix a 1.
  • El bucle while comprova si el valor del comptador és menor o igual a 5. Mentre aquesta condició sigui certa, el bucle continua executant-se.
  • Dins del bucle, el valor actual del comptador s'imprimeix mitjançant echo.
  • El comptador s'incrementa en 1 mitjançant l'expressió $((comptador + 1)).
bucle while

bucle while

24) Creeu un script d'intèrpret d'ordres que trobi i llista tots els fitxers buits d'un directori.

Script de Shell que podeu utilitzar per trobar i llistar tots els fitxers buits d'un directori mitjançant les ordres `find' i `stat`:

#!/bin/bash
directori=$1″
if [ -z $directori ]; aleshores
echo Ús: $0
sortida 1
ser

si [ ! -d $directori ]; aleshores
echo Error: '$directory' no és un directori vàlid.
sortida 1
ser
echo Fitxers buits al directori $:
cerca $directory -type f -empty

Explicació:

  1. ` #!/bin/bash `: Això s'anomena shebang i diu al sistema operatiu que utilitzi l'intèrpret d'ordres Bash per interpretar i executar l'script.
  2. ` directori=$1″ `: Aquesta línia assigna el primer argument de la línia d'ordres (indicat per $1) a la variable ` directori `.
  3. ` if [ -z $directori ]; aleshores `: Aquesta línia comença una instrucció if que verifica si el ` directori ` La variable està buida (-z prova una cadena buida).
  4. ` echo Ús: $0 `: Si el directori està buit, aquesta línia imprimeix un missatge d'ús, on ` $0 ` representa el nom del guió.
  5. ` sortida 1 `: aquesta línia surt de l'script amb un codi de sortida de ` 1 `, que indica un error.
  6. ` ser `: aquesta línia marca el final del ` si ` declaració.
  7. ` si [ ! -d $directori ]; aleshores `: S'inicia una altra instrucció if per comprovar si el directori proporcionat existeix (` -d ` proves per a un directori).
  8. ` echo Error: '$directory' no és un directori vàlid. `: Si el directori proporcionat no existeix, aquesta línia imprimeix un missatge d'error.
  9. ` sortida 1 `: surt de l'script amb un codi de sortida de ` 1 `.
  10. ` ser `: Marca el final del segon ` si' declaració.
  11. ` echo Fitxers buits al directori $: `: Si tot és vàlid fins ara, aquesta línia imprimeix un missatge que indica que l'script enumerarà els fitxers buits al directori especificat.
  12. ` cerca $directory -type f -empty `: aquesta línia utilitza el ` trobar ` ordre per cercar fitxers buits (` -buit `) de tipus fitxers normals (` -tipus f `) al directori especificat. A continuació, enumera aquests fitxers buits.
Trobar fitxers buits

Trobar fitxers buits

Nota : Hem de proporcionar un directori com a argument en executar l'script. Aquí hem utilitzat la ruta del directori actual home/jayeshkumar/

25) Quin és l'objectiu de l'ordre de lectura en els scripts d'intèrpret d'ordres?

L'ordre de lectura dels scripts d'intèrpret d'ordres permet que l'script us demani informació. És com quan un ordinador et fa una pregunta i espera la teva resposta. Això és útil per a scripts que necessiten que escriviu alguna cosa o per quan l'script necessita treballar amb informació dels fitxers. L'ordre de lectura ajuda a aturar l'script i esperar el que escriviu, i després pot utilitzar aquesta informació per fer més coses a l'script.

Sintaxi de l'ordre de lectura:

read variable_name>

Exemple : Si volem prendre el nom com a entrada de l'usuari per imprimir-lo.

#!/bin/bash
echo Introduïu el vostre nom:
llegir el nom
echo Hola, $name!

453

llegir nom

En resum, l'ordre read s'utilitza per capturar l'entrada de l'usuari o les dades dels fitxers dins dels scripts d'intèrpret d'ordres, fent que els scripts siguin més interactius i versàtils.

26) Escriu un script d'intèrpret d'ordres que converteixi tots els noms de fitxers d'un directori a minúscules.

Aquí hi ha un script d'intèrpret d'ordres que converteix tots els noms de fitxer d'un directori a minúscules.

#!/bin/bash
directori=$1″
if [ -z $directori ]; aleshores
echo Ús: $0
sortida 1
ser

si [ ! -d $directori ]; aleshores

echo Error: '$directory' no és un directori vàlid.
sortida 1
ser

cd $directori || sortida 1

per al fitxer en *; fer
if [ -f $fitxer ]; aleshores
nounom=$(eco $fitxer | tr ‘A-Z’ ‘a-z’)
[ $fitxer != $nom nou ] && mv $fitxer $nom nou
ser
fet

Explicació:

  1. #!/bin/bash : Aquest és el shebang, que especifica que l'script s'ha d'interpretar mitjançant l'intèrpret d'ordres Bash.
  2. directori=$1″ : Aquesta línia assigna el primer argument de la línia d'ordres al directori de variables.
  3. if [ -z $directori ]; aleshores : Aquesta línia comprova si la variable de directori està buida (no es proporciona cap argument en executar l'script).
  4. echo Ús: $0 : Si el directori està buit, aquesta línia imprimeix un missatge d'ús amb el nom de l'script ($0).
  5. sortida 1 : Aquesta línia surt de l'script amb un codi de sortida 1, que indica que s'ha produït un error.
  6. f i: Això marca el final de la primera declaració if.
  7. si [ ! -d $directori]; aleshores : Aquesta línia comprova si el directori especificat no existeix (-d prova per a un directori).
  8. echo Error: '$directory' no és un directori vàlid. : Si el directori especificat no existeix, aquesta línia imprimeix un missatge d'error.
  9. sortida 1 : surt de l'script amb un codi de sortida d'1.
  10. ser : Marca el final de la segona declaració if.
  11. cd $directori || sortida 1 : Canvia el directori de treball actual al directori especificat. Si el canvi de directori falla (p. ex., directori inexistent), l'script surt amb un codi d'error.
  12. per al fitxer en *; fer: jo per al fitxer en *; fer: inicia un bucle que itera sobre tots els elements del directori actual (* coincideix amb tots els noms de fitxer).
  13. if [ -f $fitxer ]; aleshores : Comprova si l'element d'iteració del bucle actual és un fitxer normal (-f prova per a un fitxer normal).
  14. nounom=$(eco $fitxer | tr ‘A-Z’ ‘a-z’) : Converteix el nom del fitxer actual ($fitxer) a minúscules mitjançant l'ordre tr i emmagatzema el resultat a la variable newname.
  15. [ $fitxer != $nom nou ] && mv $fitxer $nom nou : compara el nom del fitxer original amb el nou nom del fitxer en minúscules. Si són diferents, canvia el nom del fitxer mitjançant l'ordre mv.
  16. ser : Marca el final de la declaració si interna.
  17. fet : Marca el final del bucle.

454

Nota : Hem de proporcionar un directori com a argument en executar l'script. Aquí hem utilitzat la ruta del directori actual home/jayeshkumar/test

27) Com podeu utilitzar operacions aritmètiques dins d'un script de shell?

Les operacions aritmètiques es poden realitzar dins d'un script de shell utilitzant diversos mètodes integrats. L'intèrpret d'ordres proporciona mecanismes per a càlculs aritmètics simples mitjançant l'expansió aritmètica Com:

  1. Expansió aritmètica ($((…)))
  2. Utilitzant l'ordre expr
  3. Utilitzant el comandament let

Aquí teniu el nostre script Shell que explica els tres mètodes per a operacions aritmètiques.

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

#Expansió aritmètica ($((…)))

resultat=$((núm1 + núm2))
echo Suma: $resultat

#Usant l'ordre expr

suma=$(expr $núm1 + $núm2)
echo Suma: $sum

#Usant el comandament let

siguem suma = num1 + num2
echo Suma: $sum

Explicació:

  1. `#!/bin/bash` : Aquest és el shebang, que especifica que l'script s'ha d'interpretar mitjançant l'intèrpret d'ordres Bash.
  2. `núm1=10` i ` num2=5` : Aquestes línies assignen els valors 10 i 5 a les variables ` num1 ` i ` num2 `, respectivament.
  3. `#Expansió aritmètica ($((…)))` : Aquest és un comentari que indica l'inici de la secció que demostra l'expansió aritmètica.
  4. `resultat=$((núm1 + núm2))` : Aquesta línia utilitza l'expansió aritmètica per calcular la suma de ` núm1 ` i ` num2 ` i emmagatzema el resultat al fitxer ` resultat ` variable.
  5. `echo Sum: $resultat` : Aquesta línia imprimeix la suma calculada utilitzant el valor emmagatzemat al ` resultat ` variable.
  6. `#Usant l'ordre expr` : Aquest és un comentari que indica l'inici de la secció que demostra l'ús del ` expr ` ordre per a operacions aritmètiques.
  7. `suma=$(expr $núm1 + $núm2)` : Aquesta línia utilitza el ` expr ` ordre per calcular la suma de ` núm1 ` i ` num2 ` i emmagatzema el resultat al fitxer ` suma ` variable. Tingueu en compte que el ` expr L'ordre ` requereix espais al voltant dels operadors.
  8. `echo Sum: $sum` : Aquesta línia imprimeix la suma calculada utilitzant el valor emmagatzemat al ` suma ` variable.
  9. `#Usant l'ordre let` : Aquest és un comentari que indica l'inici de la secció que demostra l'ús del ` deixar ` ordre per a operacions aritmètiques.
  10. `deixar suma = num1 + num2″` : Aquesta línia utilitza el ` deixar ` ordre per calcular la suma de ` núm1 ` i ` num2 ` i assigna el resultat a ` suma ` variable. El ` deixar L'ordre ` no requereix espais al voltant dels operadors.
  11. `echo Sum: $sum` : Aquesta línia imprimeix la suma calculada utilitzant el valor emmagatzemat al ` suma ` variable.
aritmètica

aritmètica

28) Creeu un script que comprovi si es pot accedir a un host de xarxa.

Aquí hi ha un script d'intèrpret d'ordres senzill que utilitza l'ordre ping per comprovar si es pot accedir a un host de xarxa:

#!/bin/bash
amfitrió=$1″
if [ -z $amfitrió ]; aleshores
echo Ús: $0
sortida 1
ser
ping -c 4 $host

si [ $? -eq 0]; aleshores
echo $host és accessible.
altra cosa
echo $host no és accessible.
ser

Explicació:

  1. Pren un nom d'amfitrió o una adreça IP com a argument i comprova si es proporciona l'argument.
  2. Si no es proporciona cap argument, mostra un missatge d'ús i surt.
  3. Utilitza l'ordre ping amb l'opció -c 4 per enviar quatre sol·licituds d'eco ICMP a l'amfitrió especificat.
  4. Després d'executar l'ordre ping, comprova l'estat de sortida ($?). Si l'estat de sortida és 0, vol dir que l'amfitrió és accessible i l'script imprimeix un missatge d'èxit. En cas contrari, imprimeix un missatge d'error.

456

Nota : Hem de proporcionar un nom d'amfitrió com a argument quan executem l'script. Aquí hem utilitzat google.com

29) Escriu un script de Shell per trobar l'element més gran d'una matriu:

Aquí hi ha un script de shell per trobar l'element més gran d'una matriu.

#!/bin/bash
# Declarar una matriu
matriu=(3 56 24 89 67)

# Inicialitzeu una variable per emmagatzemar el valor màxim, començant pel primer element

max=${array[0]}

# Iterar per la matriu

per num a ${array[@]}; fer

# Compara cada element amb el màxim actual

si ((número> màxim)); aleshores
màxim=$núm
ser
fet

# Imprimeix el valor màxim

echo L'element màxim de la matriu és: $max

Explicació:

  1. ` #!/bin/bash `: La línia shebang especifica que l'script s'ha d'interpretar mitjançant l'intèrpret d'ordres Bash.
  2. ` matriu=(3 56 24 89 67) `: La matriu es declara i s'inicia amb valors.
  3. ` max=${array[0]} `: `max` s'inicialitza amb el primer element de la matriu.
  4. ` per num a ${array[@]}; fer `: Un bucle `for` s'utilitza per iterar pels elements de la matriu.
  5. ` si ((número> màxim)); aleshores `: Una instrucció `if` verifica si l'element actual `num` és més gran que el màxim actual `max`.
  6. ` max=$num`: Si`núm ` és més gran que `max`, `max` s'actualitza amb el valor de num.
  7. ` fet `: El bucle `for` està tancat.
  8. ` echo L'element màxim de la matriu és: $max `: Finalment, l'script imprimeix el valor màxim trobat a la matriu.
461

nombre més gran

30) Escriu un guió per calcular la suma dels elements d'una matriu.

#!/bin/bash

# Declarar una matriu

matriu=(1 65 22 19 94)

# Inicialitzar una variable per emmagatzemar la suma

suma=0

# Iterar per la matriu i afegir cada element a la suma

per num a ${array[@]}; fer
am=$((am + am))
fet

# Imprimeix la suma

echo La suma d'elements de la matriu és: $sum

Explicació:

` #!/bin/bash `: La línia shebang especifica que l'script s'ha d'interpretar mitjançant l'intèrpret d'ordres Bash.

` matriu=(1 65 22 19 94) `: La matriu es declara i s'inicia amb valors.

` suma=0 `: ` suma ` s'inicia a zero per contenir la suma d'elements.

` per num a ${array[@]}; fer `: A` per ` bucle s'utilitza per iterar a través dels elements de la matriu.

` am=$((am + am)) `: Dins del bucle, cada element ` en una ` s'afegeix al ` suma ` variable.

` fet `: El ` per ` el bucle està tancat.

`echo La suma d'elements de la matriu és: $sum`: Finalment, l'script imprimeix la suma de tots els elements de la matriu.

462

Suma d'elements

Més informació sobre els scripts de Shell

Conclusió

Tots els geeks sabem que el shell script és molt útil per augmentar la productivitat del treball i també per estalviar temps. Per tant, en aquest article hem tractat 30 exemples de scripts d'intèrpret d'ordres molt útils i la majoria d'estafadors . Esperem que aquesta guia completa sobre l'exemple de shell script us ajudi a entendre tot sobre els shell scripts.




sortida 1
ser
ping -c 4 $host

si [ $? -eq 0]; aleshores
echo $host és accessible.
altra cosa
echo $host no és accessible.
ser

Explicació:

  1. Pren un nom d'amfitrió o una adreça IP com a argument i comprova si es proporciona l'argument.
  2. Si no es proporciona cap argument, mostra un missatge d'ús i surt.
  3. Utilitza l'ordre ping amb l'opció -c 4 per enviar quatre sol·licituds d'eco ICMP a l'amfitrió especificat.
  4. Després d'executar l'ordre ping, comprova l'estat de sortida ($?). Si l'estat de sortida és 0, vol dir que l'amfitrió és accessible i l'script imprimeix un missatge d'èxit. En cas contrari, imprimeix un missatge d'error.

456

Nota : Hem de proporcionar un nom d'amfitrió com a argument quan executem l'script. Aquí hem utilitzat google.com

29) Escriu un script de Shell per trobar l'element més gran d'una matriu:

Aquí hi ha un script de shell per trobar l'element més gran d'una matriu.

#!/bin/bash
# Declarar una matriu
matriu=(3 56 24 89 67)

# Inicialitzeu una variable per emmagatzemar el valor màxim, començant pel primer element

max=${array[0]}

# Iterar per la matriu

per num a ${array[@]}; fer

# Compara cada element amb el màxim actual

si ((número> màxim)); aleshores
màxim=$núm
ser
fet

# Imprimeix el valor màxim

echo L'element màxim de la matriu és: $max

Explicació:

  1. ` #!/bin/bash `: La línia shebang especifica que l'script s'ha d'interpretar mitjançant l'intèrpret d'ordres Bash.
  2. ` matriu=(3 56 24 89 67) `: La matriu es declara i s'inicia amb valors.
  3. ` max=${array[0]} `: `max` s'inicialitza amb el primer element de la matriu.
  4. ` per num a ${array[@]}; fer `: Un bucle `for` s'utilitza per iterar pels elements de la matriu.
  5. ` si ((número> màxim)); aleshores `: Una instrucció `if` verifica si l'element actual `num` és més gran que el màxim actual `max`.
  6. ` max=$num`: Si`núm ` és més gran que `max`, `max` s'actualitza amb el valor de num.
  7. ` fet `: El bucle `for` està tancat.
  8. ` echo L'element màxim de la matriu és: $max `: Finalment, l'script imprimeix el valor màxim trobat a la matriu.
461

nombre més gran

30) Escriu un guió per calcular la suma dels elements d'una matriu.

#!/bin/bash

# Declarar una matriu

matriu=(1 65 22 19 94)

# Inicialitzar una variable per emmagatzemar la suma

suma=0

# Iterar per la matriu i afegir cada element a la suma

per num a ${array[@]}; fer
am=$((am + am))
fet

# Imprimeix la suma

echo La suma d'elements de la matriu és: $sum

123 pel·lícula

Explicació:

` #!/bin/bash `: La línia shebang especifica que l'script s'ha d'interpretar mitjançant l'intèrpret d'ordres Bash.

` matriu=(1 65 22 19 94) `: La matriu es declara i s'inicia amb valors.

` suma=0 `: ` suma ` s'inicia a zero per contenir la suma d'elements.

` per num a ${array[@]}; fer `: A` per ` bucle s'utilitza per iterar a través dels elements de la matriu.

` am=$((am + am)) `: Dins del bucle, cada element ` en una ` s'afegeix al ` suma ` variable.

` fet `: El ` per ` el bucle està tancat.

`echo La suma d'elements de la matriu és: $sum`: Finalment, l'script imprimeix la suma de tots els elements de la matriu.

462

Suma d'elements

Més informació sobre els scripts de Shell

Conclusió

Tots els geeks sabem que el shell script és molt útil per augmentar la productivitat del treball i també per estalviar temps. Per tant, en aquest article hem tractat 30 exemples de scripts d'intèrpret d'ordres molt útils i la majoria d'estafadors . Esperem que aquesta guia completa sobre l'exemple de shell script us ajudi a entendre tot sobre els shell scripts.