logo

Com crear un script de Shell a Linux

Shell és una interfície del sistema operatiu. Accepta ordres dels usuaris i les interpreta al sistema operatiu. Si voleu executar un munt d'ordres juntes, podeu fer-ho creant un script de shell. Els scripts de Shell són molt útils si necessiteu fer una tasca de manera rutinària, com ara fer una còpia de seguretat. Podeu llistar aquestes ordres i executar-les totes amb un sol script. Vegem com podeu crear un script de shell i executar-lo a Linux.

Creació d'un script de Shell

Inicieu sessió a la vostra màquina Linux i obriu el terminal, navegueu a la carpeta on voleu emmagatzemar l'script de l'intèrpret d'ordres. Els scripts de Shell acaben amb l'extensió .sh. Creem el nostre primer script de shell. Escriure



touch script.sh>

Ara, aquest fitxer d'script no és executable per defecte, hem de donar el permís executable a aquest fitxer. Escriure

chmod +x script.sh>

Ara, afegirem algunes ordres a aquest script de shell. Obriu aquest script d'intèrpret d'ordres amb qualsevol editor de text que vulgueu (basat en línia d'ordres o basat en GUI) i afegiu algunes ordres. Farem servir nano. Escriure

nano script.sh>

Afegiu les ordres següents per provar aquest script de shell



echo This is my first shell script touch testfile ls echo End of my shell script>

Deseu els canvis i executeu l'script de shell escrivint

./script.sh>

Captura de pantalla dels passos anteriors

Podeu veure que va executar totes les ordres especificades.



Comentaris a l'script del shell

Qualsevol línia que comenci amb # a l'script de l'intèrpret d'ordres es tracta com un comentari i l'intèrpret d'ordres ignora durant l'execució, excepte la línia shebang, que veurem més endavant en aquest article. Vegem un exemple. Es crea un script de shell amb el contingut següent.

# This is a comment echo Testing comments in shell script>

Comentaris en Shell Script

java end for bucle

Podeu veure que el comentari s'ignora.

Variables en Shell Script

Sí, els scripts de Shell admeten l'ús de variables i no hem de definir el tipus de variable durant la seva declaració. Hi ha dos tipus de variables:

  • Variables definides pel sistema
  • Variables definides per l'usuari.

Les variables definides pel sistema, també anomenades variables d'entorn, generalment es posen en majúscula. Podeu veure totes les variables d'entorn actuals mitjançant l'ordre printenv. Les variables definides per l'usuari les defineix l'usuari i només existeixen durant l'execució de l'script. Podeu definir una variable simplement escrivint el seu nom i assignant un valor amb el signe = i accedir a una variable afegint un $ abans del nom de la variable. Les variables es mostren a l'script d'exemple següent.

nat vs llit
# Accessing an Environment Variable echo $USER # Creating and accessing User defined Variable variable_name='Geeksforgeeks' echo $variable_name>

Variables en Shell Script

Definició de l'intèrpret de Shell Script

Hi ha moltes shells disponibles a Linux, com ara The bourne shell(sh), The Korn Shell(ksh) i GNU Bourne-Again Shell(bash). Els scripts escrits per a l'intèrpret d'ordres sh s'anomenen scripts d'intèrpret d'ordres, i es poden interpretar ambdós, ksh i bash. ksh i Bash són versions millorades de l'intèrpret d'ordres sh original i tenen més funcions que sh. Bash és generalment l'intèrpret d'ordres predeterminat a la majoria de distribucions de Linux i els scripts escrits específicament per a l'intèrpret d'ordres bash s'anomenen scripts bash.

Podeu especificar quin intèrpret d'ordres utilitzarà l'script, fins i tot si s'executa des d'un altre terminal d'intèrpret d'ordres. Per fer-ho, afegeix #! a la part superior del fitxer d'script, seguit del camí absolut de l'intèrpret d'ordres escollit. Per especificar bash com a intèrpret, afegiu la línia següent a la part superior de l'script de shell.

#!/bin/bash>

Aquesta línia s'anomena línia shebang.

Nota: Això només funcionarà si bash està instal·lat al vostre sistema.

Operadors de comparació

Podeu comparar dues variables en shell scripting. Fem aquestes comparacions per prendre decisions, veurem com fer-ho més endavant en aquest article, però abans d'això, aquí teniu una llista d'alguns operadors de comparació.

Comparació de nombres enters

Operador Descripció
-eq és igual a
- és no és igual a
-gt és més gran que
-ge és superior o igual a
-lt és menys que
-el és menor o igual a

Comparació de cadenes

Operador Descripció
== és igual a
!= no és igual a
< és inferior a, en ordre alfabètic ASCII
> és més gran que, en ordre alfabètic ASCII

Afegim un abans perquè cal escapar-los quan s'escriuen a la construcció [ ]. Ara, anem a veure on s'utilitzen.

Declaracions condicionals

Les sentències condicionals s'utilitzen per executar un bloc de codi només quan es compleixen determinades condicions. Els scripts de Shell admeten l'ús de declaracions condicionals. Utilitzem operadors de comparació per comprovar les condicions. Vegem unes quantes declaracions condicionals.

programa d'encapsulació

Si declaració

Comprova la condició i, si està condicionada com a cert, executa les ordres.

Sintaxi

if [ condition ] then #statements fi>

Vegem un exemple.

#!/bin/sh x=10 y=11 if [ $x -ne $y ] then echo 'Not equal' fi>

.if declaració

Declaració de si més

En una instrucció if-else, podeu especificar un conjunt d'ordres per executar si no es compleix la condició.

Sintaxi

if [ condition ] then #set of statements if the condition is true else #set of statements if the condition is false fi>

Vegem un exemple

#!/Syntaxbin/sh x=10 y=10 if [ $x -ne $y ] then echo 'Not equal' else echo 'They are equal' fi>

declaració .if-else

Hi ha altres enunciats condicionals, podeu llegir-ne aquí .

Nota: Escriviu un espai després de [ i abans ] mentre especifiqueu la condició que cal comprovar, en cas contrari obtindreu un error.

Bucles

Utilitzant bucles, podeu fer un conjunt d'ordres una i altra vegada, fins que es compleixi una determinada condició. Vegem alguns dels bucles.

Bucle mentre

Comença a executar les ordres especificades si la condició és certa i les repeteix fins que la condició sigui falsa.

Sintaxi

while [ condition ] do #set of statements done>

Vegem un exemple.

#!/bin/sh x=2 while [ $x -lt 6 ] do echo $x x=`expr $x + 1` done>

Bucle mentre

Tanquem una instrucció expr dins de ` ` quan l'assignem a una variable. Podeu llegir sobre l'ordre expr aquí.

Per bucle

En un bucle for, la variable itera sobre una llista de valors i acaba quan no hi ha més valors per iterar.

jocs de missatges per a Android

Sintaxi

for var in val1 val2 val3 do #statements done>

Vegem un exemple.

#!/bin/sh for var in 2 4 5 8 do echo $var done>

per bucle

Podeu llegir sobre els bucles en detall aquí .

Arguments posicionals

Els arguments posicionals són els arguments o valors que passem a l'script de l'intèrpret d'ordres mentre executem l'script. S'hi accedeix mitjançant les variables

Shell és una interfície del sistema operatiu. Accepta ordres dels usuaris i les interpreta al sistema operatiu. Si voleu executar un munt d'ordres juntes, podeu fer-ho creant un script de shell. Els scripts de Shell són molt útils si necessiteu fer una tasca de manera rutinària, com ara fer una còpia de seguretat. Podeu llistar aquestes ordres i executar-les totes amb un sol script. Vegem com podeu crear un script de shell i executar-lo a Linux.

Creació d'un script de Shell

Inicieu sessió a la vostra màquina Linux i obriu el terminal, navegueu a la carpeta on voleu emmagatzemar l'script de l'intèrpret d'ordres. Els scripts de Shell acaben amb l'extensió .sh. Creem el nostre primer script de shell. Escriure

touch script.sh>

Ara, aquest fitxer d'script no és executable per defecte, hem de donar el permís executable a aquest fitxer. Escriure

chmod +x script.sh>

Ara, afegirem algunes ordres a aquest script de shell. Obriu aquest script d'intèrpret d'ordres amb qualsevol editor de text que vulgueu (basat en línia d'ordres o basat en GUI) i afegiu algunes ordres. Farem servir nano. Escriure

nano script.sh>

Afegiu les ordres següents per provar aquest script de shell

echo This is my first shell script touch testfile ls echo End of my shell script>

Deseu els canvis i executeu l'script de shell escrivint

./script.sh>

Captura de pantalla dels passos anteriors

Podeu veure que va executar totes les ordres especificades.

Comentaris a l'script del shell

Qualsevol línia que comenci amb # a l'script de l'intèrpret d'ordres es tracta com un comentari i l'intèrpret d'ordres ignora durant l'execució, excepte la línia shebang, que veurem més endavant en aquest article. Vegem un exemple. Es crea un script de shell amb el contingut següent.

# This is a comment echo Testing comments in shell script>

Comentaris en Shell Script

Podeu veure que el comentari s'ignora.

Variables en Shell Script

Sí, els scripts de Shell admeten l'ús de variables i no hem de definir el tipus de variable durant la seva declaració. Hi ha dos tipus de variables:

  • Variables definides pel sistema
  • Variables definides per l'usuari.

Les variables definides pel sistema, també anomenades variables d'entorn, generalment es posen en majúscula. Podeu veure totes les variables d'entorn actuals mitjançant l'ordre printenv. Les variables definides per l'usuari les defineix l'usuari i només existeixen durant l'execució de l'script. Podeu definir una variable simplement escrivint el seu nom i assignant un valor amb el signe = i accedir a una variable afegint un $ abans del nom de la variable. Les variables es mostren a l'script d'exemple següent.

# Accessing an Environment Variable echo $USER # Creating and accessing User defined Variable variable_name='Geeksforgeeks' echo $variable_name>

Variables en Shell Script

Definició de l'intèrpret de Shell Script

Hi ha moltes shells disponibles a Linux, com ara The bourne shell(sh), The Korn Shell(ksh) i GNU Bourne-Again Shell(bash). Els scripts escrits per a l'intèrpret d'ordres sh s'anomenen scripts d'intèrpret d'ordres, i es poden interpretar ambdós, ksh i bash. ksh i Bash són versions millorades de l'intèrpret d'ordres sh original i tenen més funcions que sh. Bash és generalment l'intèrpret d'ordres predeterminat a la majoria de distribucions de Linux i els scripts escrits específicament per a l'intèrpret d'ordres bash s'anomenen scripts bash.

Podeu especificar quin intèrpret d'ordres utilitzarà l'script, fins i tot si s'executa des d'un altre terminal d'intèrpret d'ordres. Per fer-ho, afegeix #! a la part superior del fitxer d'script, seguit del camí absolut de l'intèrpret d'ordres escollit. Per especificar bash com a intèrpret, afegiu la línia següent a la part superior de l'script de shell.

#!/bin/bash>

Aquesta línia s'anomena línia shebang.

Nota: Això només funcionarà si bash està instal·lat al vostre sistema.

Operadors de comparació

Podeu comparar dues variables en shell scripting. Fem aquestes comparacions per prendre decisions, veurem com fer-ho més endavant en aquest article, però abans d'això, aquí teniu una llista d'alguns operadors de comparació.

Comparació de nombres enters

Operador Descripció
-eq és igual a
- és no és igual a
-gt és més gran que
-ge és superior o igual a
-lt és menys que
-el és menor o igual a

Comparació de cadenes

Operador Descripció
== és igual a
!= no és igual a
< és inferior a, en ordre alfabètic ASCII
> és més gran que, en ordre alfabètic ASCII

Afegim un abans perquè cal escapar-los quan s'escriuen a la construcció [ ]. Ara, anem a veure on s'utilitzen.

Declaracions condicionals

Les sentències condicionals s'utilitzen per executar un bloc de codi només quan es compleixen determinades condicions. Els scripts de Shell admeten l'ús de declaracions condicionals. Utilitzem operadors de comparació per comprovar les condicions. Vegem unes quantes declaracions condicionals.

Si declaració

Comprova la condició i, si està condicionada com a cert, executa les ordres.

Sintaxi

if [ condition ] then #statements fi>

Vegem un exemple.

#!/bin/sh x=10 y=11 if [ $x -ne $y ] then echo 'Not equal' fi>

.if declaració

Declaració de si més

En una instrucció if-else, podeu especificar un conjunt d'ordres per executar si no es compleix la condició.

Sintaxi

if [ condition ] then #set of statements if the condition is true else #set of statements if the condition is false fi>

Vegem un exemple

#!/Syntaxbin/sh x=10 y=10 if [ $x -ne $y ] then echo 'Not equal' else echo 'They are equal' fi>

declaració .if-else

Hi ha altres enunciats condicionals, podeu llegir-ne aquí .

Nota: Escriviu un espai després de [ i abans ] mentre especifiqueu la condició que cal comprovar, en cas contrari obtindreu un error.

Bucles

Utilitzant bucles, podeu fer un conjunt d'ordres una i altra vegada, fins que es compleixi una determinada condició. Vegem alguns dels bucles.

Bucle mentre

Comença a executar les ordres especificades si la condició és certa i les repeteix fins que la condició sigui falsa.

Sintaxi

while [ condition ] do #set of statements done>

Vegem un exemple.

#!/bin/sh x=2 while [ $x -lt 6 ] do echo $x x=`expr $x + 1` done>

Bucle mentre

Tanquem una instrucció expr dins de ` ` quan l'assignem a una variable. Podeu llegir sobre l'ordre expr aquí.

Per bucle

En un bucle for, la variable itera sobre una llista de valors i acaba quan no hi ha més valors per iterar.

Sintaxi

for var in val1 val2 val3 do #statements done>

Vegem un exemple.

#!/bin/sh for var in 2 4 5 8 do echo $var done>

per bucle

Podeu llegir sobre els bucles en detall aquí .

Arguments posicionals

Els arguments posicionals són els arguments o valors que passem a l'script de l'intèrpret d'ordres mentre executem l'script. S'hi accedeix mitjançant les variables $0, $1, $2 ... $9. Més enllà d'això, es fan referència per ${10}, ${11}, etc. $# emmagatzema el nombre d'arguments passats i $0 emmagatzema el nom de l'script. Vegem un exemple per entendre tot això.

#!/bin/sh echo 'No of arguments is $#' echo 'Name of the script is $0' echo 'First argument is $1' echo 'Second argument is $2'>

Per passar els arguments, només cal que escriviu-los al terminal després del nom de l'script, tal com es mostra a continuació.

Arguments posicionals

Emmagatzemar la sortida de les ordres

Podeu emmagatzemar la sortida de les ordres dins d'una variable en un script de shell. Hi ha dues maneres de fer-ho.

Sintaxi

#Syntax 1 var=$(a valid linux command) #Syntax 2 var2=`a valid linux command`>

Vegem un exemple.

#!/bin/sh b=$(pwd) c=`pwd` echo $b echo $c d=$(ls /bin | grep bash) echo $d>

Emmagatzemar la sortida de les ordres

Codis de sortida de les ordres de l'intèrpret d'ordres

Sempre que una ordre acaba i torna el control al procés principal, retorna codis de sortida entre 0 i 255. El codi de sortida 0 significa que l'ordre ha tingut èxit, i qualsevol altre codi de sortida significa que l'ordre no ha tingut èxit. Podeu veure el codi de sortida després d'executar qualsevol comanda accedint a $? variable. Vegeu l'exemple següent.

codi de sortida de l'ordre de l'intèrpret d'ordres

Podeu configurar manualment un codi de sortida per al vostre script de shell. Això es pot utilitzar amb declaracions condicionals per transmetre si el propòsit del guió s'ha aconseguit o no.

Exemple

#!/bin/sh read x if [ $x -ne 10 ] then echo failed exit 1 else echo passed exit 0 fi>

codi de sortida de l'ordre de l'intèrpret d'ordres



, , ... . Més enllà d'això, es fan referència per , , etc. $# emmagatzema el nombre d'arguments passats i

Shell és una interfície del sistema operatiu. Accepta ordres dels usuaris i les interpreta al sistema operatiu. Si voleu executar un munt d'ordres juntes, podeu fer-ho creant un script de shell. Els scripts de Shell són molt útils si necessiteu fer una tasca de manera rutinària, com ara fer una còpia de seguretat. Podeu llistar aquestes ordres i executar-les totes amb un sol script. Vegem com podeu crear un script de shell i executar-lo a Linux.

Creació d'un script de Shell

Inicieu sessió a la vostra màquina Linux i obriu el terminal, navegueu a la carpeta on voleu emmagatzemar l'script de l'intèrpret d'ordres. Els scripts de Shell acaben amb l'extensió .sh. Creem el nostre primer script de shell. Escriure

touch script.sh>

Ara, aquest fitxer d'script no és executable per defecte, hem de donar el permís executable a aquest fitxer. Escriure

chmod +x script.sh>

Ara, afegirem algunes ordres a aquest script de shell. Obriu aquest script d'intèrpret d'ordres amb qualsevol editor de text que vulgueu (basat en línia d'ordres o basat en GUI) i afegiu algunes ordres. Farem servir nano. Escriure

nano script.sh>

Afegiu les ordres següents per provar aquest script de shell

echo This is my first shell script touch testfile ls echo End of my shell script>

Deseu els canvis i executeu l'script de shell escrivint

./script.sh>

Captura de pantalla dels passos anteriors

Podeu veure que va executar totes les ordres especificades.

Comentaris a l'script del shell

Qualsevol línia que comenci amb # a l'script de l'intèrpret d'ordres es tracta com un comentari i l'intèrpret d'ordres ignora durant l'execució, excepte la línia shebang, que veurem més endavant en aquest article. Vegem un exemple. Es crea un script de shell amb el contingut següent.

# This is a comment echo Testing comments in shell script>

Comentaris en Shell Script

Podeu veure que el comentari s'ignora.

Variables en Shell Script

Sí, els scripts de Shell admeten l'ús de variables i no hem de definir el tipus de variable durant la seva declaració. Hi ha dos tipus de variables:

  • Variables definides pel sistema
  • Variables definides per l'usuari.

Les variables definides pel sistema, també anomenades variables d'entorn, generalment es posen en majúscula. Podeu veure totes les variables d'entorn actuals mitjançant l'ordre printenv. Les variables definides per l'usuari les defineix l'usuari i només existeixen durant l'execució de l'script. Podeu definir una variable simplement escrivint el seu nom i assignant un valor amb el signe = i accedir a una variable afegint un $ abans del nom de la variable. Les variables es mostren a l'script d'exemple següent.

# Accessing an Environment Variable echo $USER # Creating and accessing User defined Variable variable_name='Geeksforgeeks' echo $variable_name>

Variables en Shell Script

Definició de l'intèrpret de Shell Script

Hi ha moltes shells disponibles a Linux, com ara The bourne shell(sh), The Korn Shell(ksh) i GNU Bourne-Again Shell(bash). Els scripts escrits per a l'intèrpret d'ordres sh s'anomenen scripts d'intèrpret d'ordres, i es poden interpretar ambdós, ksh i bash. ksh i Bash són versions millorades de l'intèrpret d'ordres sh original i tenen més funcions que sh. Bash és generalment l'intèrpret d'ordres predeterminat a la majoria de distribucions de Linux i els scripts escrits específicament per a l'intèrpret d'ordres bash s'anomenen scripts bash.

Podeu especificar quin intèrpret d'ordres utilitzarà l'script, fins i tot si s'executa des d'un altre terminal d'intèrpret d'ordres. Per fer-ho, afegeix #! a la part superior del fitxer d'script, seguit del camí absolut de l'intèrpret d'ordres escollit. Per especificar bash com a intèrpret, afegiu la línia següent a la part superior de l'script de shell.

#!/bin/bash>

Aquesta línia s'anomena línia shebang.

Nota: Això només funcionarà si bash està instal·lat al vostre sistema.

Operadors de comparació

Podeu comparar dues variables en shell scripting. Fem aquestes comparacions per prendre decisions, veurem com fer-ho més endavant en aquest article, però abans d'això, aquí teniu una llista d'alguns operadors de comparació.

Comparació de nombres enters

Operador Descripció
-eq és igual a
- és no és igual a
-gt és més gran que
-ge és superior o igual a
-lt és menys que
-el és menor o igual a

Comparació de cadenes

Operador Descripció
== és igual a
!= no és igual a
< és inferior a, en ordre alfabètic ASCII
> és més gran que, en ordre alfabètic ASCII

Afegim un abans perquè cal escapar-los quan s'escriuen a la construcció [ ]. Ara, anem a veure on s'utilitzen.

Declaracions condicionals

Les sentències condicionals s'utilitzen per executar un bloc de codi només quan es compleixen determinades condicions. Els scripts de Shell admeten l'ús de declaracions condicionals. Utilitzem operadors de comparació per comprovar les condicions. Vegem unes quantes declaracions condicionals.

Si declaració

Comprova la condició i, si està condicionada com a cert, executa les ordres.

Sintaxi

if [ condition ] then #statements fi>

Vegem un exemple.

#!/bin/sh x=10 y=11 if [ $x -ne $y ] then echo 'Not equal' fi>

.if declaració

Declaració de si més

En una instrucció if-else, podeu especificar un conjunt d'ordres per executar si no es compleix la condició.

Sintaxi

if [ condition ] then #set of statements if the condition is true else #set of statements if the condition is false fi>

Vegem un exemple

#!/Syntaxbin/sh x=10 y=10 if [ $x -ne $y ] then echo 'Not equal' else echo 'They are equal' fi>

declaració .if-else

Hi ha altres enunciats condicionals, podeu llegir-ne aquí .

Nota: Escriviu un espai després de [ i abans ] mentre especifiqueu la condició que cal comprovar, en cas contrari obtindreu un error.

Bucles

Utilitzant bucles, podeu fer un conjunt d'ordres una i altra vegada, fins que es compleixi una determinada condició. Vegem alguns dels bucles.

Bucle mentre

Comença a executar les ordres especificades si la condició és certa i les repeteix fins que la condició sigui falsa.

Sintaxi

while [ condition ] do #set of statements done>

Vegem un exemple.

#!/bin/sh x=2 while [ $x -lt 6 ] do echo $x x=`expr $x + 1` done>

Bucle mentre

Tanquem una instrucció expr dins de ` ` quan l'assignem a una variable. Podeu llegir sobre l'ordre expr aquí.

Per bucle

En un bucle for, la variable itera sobre una llista de valors i acaba quan no hi ha més valors per iterar.

Sintaxi

for var in val1 val2 val3 do #statements done>

Vegem un exemple.

#!/bin/sh for var in 2 4 5 8 do echo $var done>

per bucle

Podeu llegir sobre els bucles en detall aquí .

Arguments posicionals

Els arguments posicionals són els arguments o valors que passem a l'script de l'intèrpret d'ordres mentre executem l'script. S'hi accedeix mitjançant les variables $0, $1, $2 ... $9. Més enllà d'això, es fan referència per ${10}, ${11}, etc. $# emmagatzema el nombre d'arguments passats i $0 emmagatzema el nom de l'script. Vegem un exemple per entendre tot això.

#!/bin/sh echo 'No of arguments is $#' echo 'Name of the script is $0' echo 'First argument is $1' echo 'Second argument is $2'>

Per passar els arguments, només cal que escriviu-los al terminal després del nom de l'script, tal com es mostra a continuació.

Arguments posicionals

Emmagatzemar la sortida de les ordres

Podeu emmagatzemar la sortida de les ordres dins d'una variable en un script de shell. Hi ha dues maneres de fer-ho.

Sintaxi

#Syntax 1 var=$(a valid linux command) #Syntax 2 var2=`a valid linux command`>

Vegem un exemple.

#!/bin/sh b=$(pwd) c=`pwd` echo $b echo $c d=$(ls /bin | grep bash) echo $d>

Emmagatzemar la sortida de les ordres

Codis de sortida de les ordres de l'intèrpret d'ordres

Sempre que una ordre acaba i torna el control al procés principal, retorna codis de sortida entre 0 i 255. El codi de sortida 0 significa que l'ordre ha tingut èxit, i qualsevol altre codi de sortida significa que l'ordre no ha tingut èxit. Podeu veure el codi de sortida després d'executar qualsevol comanda accedint a $? variable. Vegeu l'exemple següent.

codi de sortida de l'ordre de l'intèrpret d'ordres

Podeu configurar manualment un codi de sortida per al vostre script de shell. Això es pot utilitzar amb declaracions condicionals per transmetre si el propòsit del guió s'ha aconseguit o no.

Exemple

#!/bin/sh read x if [ $x -ne 10 ] then echo failed exit 1 else echo passed exit 0 fi>

codi de sortida de l'ordre de l'intèrpret d'ordres



emmagatzema el nom de l'script. Vegem un exemple per entendre tot això.

rebaixa amb imatges
#!/bin/sh echo 'No of arguments is $#' echo 'Name of the script is 

Shell és una interfície del sistema operatiu. Accepta ordres dels usuaris i les interpreta al sistema operatiu. Si voleu executar un munt d'ordres juntes, podeu fer-ho creant un script de shell. Els scripts de Shell són molt útils si necessiteu fer una tasca de manera rutinària, com ara fer una còpia de seguretat. Podeu llistar aquestes ordres i executar-les totes amb un sol script. Vegem com podeu crear un script de shell i executar-lo a Linux.

Creació d'un script de Shell

Inicieu sessió a la vostra màquina Linux i obriu el terminal, navegueu a la carpeta on voleu emmagatzemar l'script de l'intèrpret d'ordres. Els scripts de Shell acaben amb l'extensió .sh. Creem el nostre primer script de shell. Escriure

touch script.sh>

Ara, aquest fitxer d'script no és executable per defecte, hem de donar el permís executable a aquest fitxer. Escriure

chmod +x script.sh>

Ara, afegirem algunes ordres a aquest script de shell. Obriu aquest script d'intèrpret d'ordres amb qualsevol editor de text que vulgueu (basat en línia d'ordres o basat en GUI) i afegiu algunes ordres. Farem servir nano. Escriure

nano script.sh>

Afegiu les ordres següents per provar aquest script de shell

echo This is my first shell script touch testfile ls echo End of my shell script>

Deseu els canvis i executeu l'script de shell escrivint

./script.sh>

Captura de pantalla dels passos anteriors

Podeu veure que va executar totes les ordres especificades.

Comentaris a l'script del shell

Qualsevol línia que comenci amb # a l'script de l'intèrpret d'ordres es tracta com un comentari i l'intèrpret d'ordres ignora durant l'execució, excepte la línia shebang, que veurem més endavant en aquest article. Vegem un exemple. Es crea un script de shell amb el contingut següent.

# This is a comment echo Testing comments in shell script>

Comentaris en Shell Script

Podeu veure que el comentari s'ignora.

Variables en Shell Script

Sí, els scripts de Shell admeten l'ús de variables i no hem de definir el tipus de variable durant la seva declaració. Hi ha dos tipus de variables:

  • Variables definides pel sistema
  • Variables definides per l'usuari.

Les variables definides pel sistema, també anomenades variables d'entorn, generalment es posen en majúscula. Podeu veure totes les variables d'entorn actuals mitjançant l'ordre printenv. Les variables definides per l'usuari les defineix l'usuari i només existeixen durant l'execució de l'script. Podeu definir una variable simplement escrivint el seu nom i assignant un valor amb el signe = i accedir a una variable afegint un $ abans del nom de la variable. Les variables es mostren a l'script d'exemple següent.

# Accessing an Environment Variable echo $USER # Creating and accessing User defined Variable variable_name='Geeksforgeeks' echo $variable_name>

Variables en Shell Script

Definició de l'intèrpret de Shell Script

Hi ha moltes shells disponibles a Linux, com ara The bourne shell(sh), The Korn Shell(ksh) i GNU Bourne-Again Shell(bash). Els scripts escrits per a l'intèrpret d'ordres sh s'anomenen scripts d'intèrpret d'ordres, i es poden interpretar ambdós, ksh i bash. ksh i Bash són versions millorades de l'intèrpret d'ordres sh original i tenen més funcions que sh. Bash és generalment l'intèrpret d'ordres predeterminat a la majoria de distribucions de Linux i els scripts escrits específicament per a l'intèrpret d'ordres bash s'anomenen scripts bash.

Podeu especificar quin intèrpret d'ordres utilitzarà l'script, fins i tot si s'executa des d'un altre terminal d'intèrpret d'ordres. Per fer-ho, afegeix #! a la part superior del fitxer d'script, seguit del camí absolut de l'intèrpret d'ordres escollit. Per especificar bash com a intèrpret, afegiu la línia següent a la part superior de l'script de shell.

#!/bin/bash>

Aquesta línia s'anomena línia shebang.

Nota: Això només funcionarà si bash està instal·lat al vostre sistema.

Operadors de comparació

Podeu comparar dues variables en shell scripting. Fem aquestes comparacions per prendre decisions, veurem com fer-ho més endavant en aquest article, però abans d'això, aquí teniu una llista d'alguns operadors de comparació.

Comparació de nombres enters

Operador Descripció
-eq és igual a
- és no és igual a
-gt és més gran que
-ge és superior o igual a
-lt és menys que
-el és menor o igual a

Comparació de cadenes

Operador Descripció
== és igual a
!= no és igual a
< és inferior a, en ordre alfabètic ASCII
> és més gran que, en ordre alfabètic ASCII

Afegim un abans perquè cal escapar-los quan s'escriuen a la construcció [ ]. Ara, anem a veure on s'utilitzen.

Declaracions condicionals

Les sentències condicionals s'utilitzen per executar un bloc de codi només quan es compleixen determinades condicions. Els scripts de Shell admeten l'ús de declaracions condicionals. Utilitzem operadors de comparació per comprovar les condicions. Vegem unes quantes declaracions condicionals.

Si declaració

Comprova la condició i, si està condicionada com a cert, executa les ordres.

Sintaxi

if [ condition ] then #statements fi>

Vegem un exemple.

#!/bin/sh x=10 y=11 if [ $x -ne $y ] then echo 'Not equal' fi>

.if declaració

Declaració de si més

En una instrucció if-else, podeu especificar un conjunt d'ordres per executar si no es compleix la condició.

Sintaxi

if [ condition ] then #set of statements if the condition is true else #set of statements if the condition is false fi>

Vegem un exemple

#!/Syntaxbin/sh x=10 y=10 if [ $x -ne $y ] then echo 'Not equal' else echo 'They are equal' fi>

declaració .if-else

Hi ha altres enunciats condicionals, podeu llegir-ne aquí .

Nota: Escriviu un espai després de [ i abans ] mentre especifiqueu la condició que cal comprovar, en cas contrari obtindreu un error.

Bucles

Utilitzant bucles, podeu fer un conjunt d'ordres una i altra vegada, fins que es compleixi una determinada condició. Vegem alguns dels bucles.

Bucle mentre

Comença a executar les ordres especificades si la condició és certa i les repeteix fins que la condició sigui falsa.

Sintaxi

while [ condition ] do #set of statements done>

Vegem un exemple.

#!/bin/sh x=2 while [ $x -lt 6 ] do echo $x x=`expr $x + 1` done>

Bucle mentre

Tanquem una instrucció expr dins de ` ` quan l'assignem a una variable. Podeu llegir sobre l'ordre expr aquí.

Per bucle

En un bucle for, la variable itera sobre una llista de valors i acaba quan no hi ha més valors per iterar.

Sintaxi

for var in val1 val2 val3 do #statements done>

Vegem un exemple.

#!/bin/sh for var in 2 4 5 8 do echo $var done>

per bucle

Podeu llegir sobre els bucles en detall aquí .

Arguments posicionals

Els arguments posicionals són els arguments o valors que passem a l'script de l'intèrpret d'ordres mentre executem l'script. S'hi accedeix mitjançant les variables $0, $1, $2 ... $9. Més enllà d'això, es fan referència per ${10}, ${11}, etc. $# emmagatzema el nombre d'arguments passats i $0 emmagatzema el nom de l'script. Vegem un exemple per entendre tot això.

#!/bin/sh echo 'No of arguments is $#' echo 'Name of the script is $0' echo 'First argument is $1' echo 'Second argument is $2'>

Per passar els arguments, només cal que escriviu-los al terminal després del nom de l'script, tal com es mostra a continuació.

Arguments posicionals

Emmagatzemar la sortida de les ordres

Podeu emmagatzemar la sortida de les ordres dins d'una variable en un script de shell. Hi ha dues maneres de fer-ho.

Sintaxi

#Syntax 1 var=$(a valid linux command) #Syntax 2 var2=`a valid linux command`>

Vegem un exemple.

#!/bin/sh b=$(pwd) c=`pwd` echo $b echo $c d=$(ls /bin | grep bash) echo $d>

Emmagatzemar la sortida de les ordres

Codis de sortida de les ordres de l'intèrpret d'ordres

Sempre que una ordre acaba i torna el control al procés principal, retorna codis de sortida entre 0 i 255. El codi de sortida 0 significa que l'ordre ha tingut èxit, i qualsevol altre codi de sortida significa que l'ordre no ha tingut èxit. Podeu veure el codi de sortida després d'executar qualsevol comanda accedint a $? variable. Vegeu l'exemple següent.

codi de sortida de l'ordre de l'intèrpret d'ordres

Podeu configurar manualment un codi de sortida per al vostre script de shell. Això es pot utilitzar amb declaracions condicionals per transmetre si el propòsit del guió s'ha aconseguit o no.

Exemple

#!/bin/sh read x if [ $x -ne 10 ] then echo failed exit 1 else echo passed exit 0 fi>

codi de sortida de l'ordre de l'intèrpret d'ordres



' echo 'First argument is ' echo 'Second argument is '>

Per passar els arguments, només cal que escriviu-los al terminal després del nom de l'script, tal com es mostra a continuació.

Arguments posicionals

Emmagatzemar la sortida de les ordres

Podeu emmagatzemar la sortida de les ordres dins d'una variable en un script de shell. Hi ha dues maneres de fer-ho.

Sintaxi

#Syntax 1 var=$(a valid linux command) #Syntax 2 var2=`a valid linux command`>

Vegem un exemple.

#!/bin/sh b=$(pwd) c=`pwd` echo $b echo $c d=$(ls /bin | grep bash) echo $d>

Emmagatzemar la sortida de les ordres

Codis de sortida de les ordres de l'intèrpret d'ordres

Sempre que una ordre acaba i torna el control al procés principal, retorna codis de sortida entre 0 i 255. El codi de sortida 0 significa que l'ordre ha tingut èxit, i qualsevol altre codi de sortida significa que l'ordre no ha tingut èxit. Podeu veure el codi de sortida després d'executar qualsevol comanda accedint a $? variable. Vegeu l'exemple següent.

codi de sortida de l'ordre de l'intèrpret d'ordres

Podeu configurar manualment un codi de sortida per al vostre script de shell. Això es pot utilitzar amb declaracions condicionals per transmetre si el propòsit del guió s'ha aconseguit o no.

Exemple

#!/bin/sh read x if [ $x -ne 10 ] then echo failed exit 1 else echo passed exit 0 fi>

codi de sortida de l'ordre de l'intèrpret d'ordres