Bash Scripting - Declaració If

Bash Scripting - Declaració If

Bash és un intèrpret per a llenguatges d'ordres. És un intèrpret d'ordres per defecte a la majoria de GNU/ sistemes Linux i està àmpliament disponible en diversos sistemes operatius. El nom és una abreviatura de Bourne-Again Shell . Els scripts permeten l'execució d'instruccions que, d'altra manera, s'executarien una a una de manera interactiva.

En aquest article, parlarem de la declaració if en els scripts bash.

Declaració Bash If

La sintaxi bàsica d'una sentència 'si' a Bash:

#!/bin/bash  if [ condition ]; then  # code to be executed if the condition is true fi 

Explicació:

  • if [ condition ]; then> : Aquesta línia comença la instrucció if, on condition> és l'expressió que s'avalua. Si la condició és certa, el codi dins del fitxer then> s'executa el bloc.
  • # code to be executed if the condition is true> : Aquest és el bloc de codi que s'executa si la condició especificada a la instrucció if és certa.
  • fi> : Això marca el final de la instrucció if.

Bash Script per determinar si un nombre és parell

El següent és un exemple guió això us demanarà que introduïu un número i després comprovarà si el número donat és parell.

#!/usr/bin/bash
# Aquest script demana a l'usuari que introdueixi un número, comprova si és parell i imprimeix un missatge en conseqüència.
# Demaneu a l'usuari que introdueixi un número

echo -n Introduïu el número:
llegir x

# Comproveu si el número introduït és parell
si [ $((x % 2)) == 0 ]; aleshores
echo El nombre és parell
ser

Explicació:

  1. #!/usr/bin/bash> : Aquesta és una línia shebang que especifica el camí a l'intèrpret Bash. Indica que l'script s'ha d'executar amb Bash.
  2. echo -n 'Enter Number: '> : Aquesta línia imprimeix el missatge Introduïu el número: sense un caràcter de nova línia ( -n> opció). S'espera que l'usuari introdueixi un número.
  3. read x> : Llegeix l'entrada de l'usuari i l'assigna a la variable x> .
  4. if [ $((x % 2)) == 0 ]; then> : Aquesta línia comprova si la resta de la divisió del nombre introduït ( x> ) per 2 és igual a 0. Si és cert, vol dir que el nombre és parell.
  5. echo 'Number is Even'> : Si la condició de la instrucció if és certa, aquesta línia imprimeix Number is Even a la consola.

Sortida:

Bash Script per determinar si un nombre és parell

Bash Script per determinar si un nombre és parell

Nota: L'script no gestiona els casos en què l'usuari introdueix un valor no numèric. Si l'usuari introdueix un valor no numèric, pot produir resultats inesperats. Es podria afegir una validació d'entrada addicional per solucionar-ho.

Declaració Bash if-else

La sintaxi bàsica d'una declaració 'si-else' a Bash:

#!/bin/bash

si [condició]; aleshores

# codi que s'executarà si la condició és certa

altra cosa

# codi que s'executarà si la condició és falsa

ser

Explicació:

  • if [ condition ]; then> : Aquesta línia comença la instrucció if, on condition> és l'expressió que s'avalua. Si la condició és certa, el codi dins del fitxer then> s'executa el bloc.
  • # code to be executed if the condition is true> : Aquest és el bloc de codi que s'executa si la condició especificada a la instrucció if és certa.
  • else> : Si la condició de la instrucció if és falsa, el codi dins de la instrucció else> s'executa el bloc.
  • # code to be executed if the condition is false> : Aquest és el bloc de codi que s'executa si la condició especificada a la instrucció if és falsa.
  • fi> : Això marca el final de la declaració if-else.

Com trobar el nombre més gran utilitzant declaracions if-else a Bash Script?

Aquí teniu l'script Bash per esbrinar el nombre més gran mitjançant la declaració if-else a Bash Script.

#!/bin/bash
# Demana a l'usuari que introdueixi un valor per a x

echo -n Introduïu el valor de x:
llegir x

si [ $x -gt 5 ]; aleshores
echo x és superior a 5
altra cosa
echo x no és superior a 5
ser

Explicació:

  • #!/bin/bash : Aquesta línia s'anomena shebang i indica que l'script s'ha d'interpretar i executar mitjançant l'intèrpret d'ordres Bash.
  • # Demana a l'usuari que introdueixi un valor per a x : Aquest és un comentari que indica el propòsit de la línia següent.
  • echo -n Introduïu el valor de x: : Aquesta línia imprimeix el missatge Introduïu el valor de x: al terminal sense passar a la línia següent. L'usuari introduirà el seu valor a la mateixa línia.
  • llegir x : Aquesta línia llegeix l'entrada de l'usuari i l'assigna a la variable 'x'.
  • si [ $x -gt 5 ]; aleshores : Aquesta és una declaració if que verifica si el valor de 'x' és superior a 5.
    • $x : representa el valor de la variable ‘x’.
    • -gt : Significa major que en el context de la comparació numèrica.
    • 5 : el valor que es compara.
  • echo x és més gran que 5 : Si la condició de la línia anterior és certa, aquesta línia s'executarà, la impressió x és més gran que 5 al terminal.
  • altra cosa : Si la condició de la instrucció if és falsa, l'script salta al bloc else.
  • echo x no és superior a 5 : Aquesta línia s'executa si el valor de 'x' no és superior a 5, la impressió de x no és superior a 5 al terminal.
  • ser : Això significa el final del bloc if-else.

Sortida:

Trobar un nombre més gran utilitzant if-else

Trobar un nombre més gran utilitzant if-else

Declaració Bash if-elif-else

El if-elif-else> La declaració a Bash s'utilitza per a ramificacions condicionals. Permet especificar diverses condicions i executar diferents blocs de codi en funció de l'avaluació d'aquestes condicions.

La sintaxi bàsica d'una sentència 'if-elif-else' a Bash:

#!/bin/bash

si [condició1]; aleshores
# Codi que s'executarà si la condició1 és certa
elif [condició2]; aleshores
# Codi que s'executarà si la condició 2 és certa
elif [condició3]; aleshores
# Codi que s'executarà si la condició 3 és certa
altra cosa
# Codi que s'executarà si cap de les condicions és certa
ser

Explicació:

  • si [condició1]; aleshores : Aquest és el punt de partida de la if-elif-else> declaració. El codi dins d'aquest bloc s'executarà si condition1> és cert.
  • # Codi que s'executarà si la condició1 és certa : Substituïu aquest comentari pel codi real que voleu executar si condition1> és cert.
  • elif [condició2]; aleshores : Si condition1> és fals, l'script comprova condition2> . Si condition2> és cert, s'executa el codi dins d'aquest bloc.
  • # Codi que s'executarà si la condició 2 és certa : Substituïu aquest comentari pel codi real que voleu executar si condition2> és cert.
  • elif [condició3]; aleshores : Si tots dos condition1> i condition2> són falses, l'script comprova condition3> . Si condition3> és cert, s'executa el codi dins d'aquest bloc.
  • # Codi que s'executarà si la condició 3 és certa : Substituïu aquest comentari pel codi real que voleu executar si condition3> és cert.
  • altra cosa : Si cap de les condicions anteriors (condició1, condició2, condició3, etc.) és certa, el codi dins del else> s'executa el bloc.
  • # Codi que s'executarà si cap de les condicions és certa : Substituïu aquest comentari pel codi real que voleu executar si cap de les condicions és certa.
  • ser : Això marca el final de la if-elif-else> declaració. La paraula fi és si s'escriu al revés i s'utilitza per tancar els blocs condicionals a Bash.

Com esbrinar si el nombre és positiu, negatiu o zero mitjançant la declaració 'if-elif-else' a Bash?

Augmentem el codi de l'exemple anterior per afegir la condició per comprovar si hi ha zero.

#!/bin/bash

# Demaneu a l'usuari que introdueixi un número

echo -n Introduïu un número:
llegir núm

if [ $núm -gt 0 ]; aleshores
echo $num és un nombre positiu.
elif [ $núm -lt 0 ]; aleshores
echo $num és un nombre negatiu.
altra cosa
echo $num és zero.
ser

Explicació:

  • #!/bin/bash : Aquesta línia és un shebang que indica que l'script s'ha d'interpretar i executar mitjançant l'intèrpret d'ordres Bash.
  • # Demaneu a l'usuari que introdueixi un número : Aquest és un comentari que indica el propòsit de la línia següent.
  • echo -n Introduïu un número: : Aquesta línia imprimeix el missatge Introduïu un número: al terminal sense passar a la línia següent. L'usuari introduirà el seu número a la mateixa línia.
  • llegir núm : Aquesta línia llegeix l'entrada de l'usuari i l'assigna a la variable 'num'.
  • if [ $núm -gt 0 ]; aleshores : Aquesta és una instrucció if que verifica si el valor de 'num' és superior a 0.
    • $núm : representa el valor de la variable 'num'.
    • -gt : Significa major que en el context de la comparació numèrica.
    • 0 : el valor que es compara.
  • echo $num és un nombre positiu. : Si la condició de la línia anterior és certa, aquesta línia s'executarà, imprimir $num és un nombre positiu. a la terminal.
  • elif [ $núm -lt 0 ]; aleshores : Si la condició de la instrucció if és falsa, aquesta línia comprova si el valor de 'num' és inferior a 0.
    • $núm : representa el valor de la variable 'num'.
    • -lt : Significa menys que en el context de la comparació numèrica.
    • 0 : el valor que es compara.
  • echo $num és un nombre negatiu. : Si la condició de la sentència elif és certa, aquesta línia s'executarà, imprimir $num és un nombre negatiu. a la terminal.
  • altra cosa : Si les dues condicions de les sentències if i elif són falses, l'script salta al bloc else.
  • echo $num és zero. : Aquesta línia s'executa si el valor de 'num' no és més gran que 0 ni inferior a 0, la impressió $num és zero. a la terminal.
  • ser : Això significa el final del bloc if-elif-else.

Sortida:

si el nombre és positiu, negatiu o zero fent servir

si el nombre és positiu, negatiu o zero fent servir 'if-elif-else'.

Bash Anidat if Declaració

A Bash, podeu utilitzar imbricat if> enunciats per crear estructures condicionals més complexes. Aquí teniu la sintaxi d'un imbricat if> declaració:

#!/bin/bash

si [condició1]; aleshores
# Codi que s'executarà si la condició1 és certa
si [condició2]; aleshores
# Codi que s'executarà si la condició 2 és certa
altra cosa
# Codi que s'executarà si la condició 2 és falsa
ser
altra cosa
# Codi que s'executarà si la condició1 és falsa
ser

Explicació:

  • si [condició1]; aleshores : Això és l'exterior if> declaració. Si condition1> és cert, s'executa el codi dins d'aquest bloc.
  • # Codi que s'executarà si la condició1 és certa : Substituïu aquest comentari pel codi real que voleu executar si condition1> és cert.
  • si [condició2]; aleshores : Dins del bloc de l'exterior if> afirmació, hi ha un interior if> declaració. Si condition2> és cert, s'executa el codi dins d'aquest bloc.
  • # Codi que s'executarà si la condició 2 és certa : Substituïu aquest comentari pel codi real que voleu executar si condition2> és cert.
  • altra cosa : Si condition2> a l'interior if> declaració és falsa, el codi dins de else> bloc de l'interior if> s'executa la instrucció.
  • # Codi que s'executarà si la condició 2 és falsa : Substituïu aquest comentari pel codi real que voleu executar si condition2> és fals.
  • ser : Això marca el final de l'interior if> declaració.
  • altra cosa : Si condition1> a l'exterior if> declaració és falsa, el codi dins de else> bloc de l'exterior if> s'executa la instrucció.
  • # Codi que s'executarà si la condició1 és falsa : Substituïu aquest comentari pel codi real que voleu executar si condition1> és fals.
  • ser : Això marca el final de l'exterior if> declaració.

Com comprovar l'elegibilitat per a l'edat i els beneficis per a la gent gran a Bash mitjançant declaracions If anidades?

Modifiquem una mica el codi anterior per utilitzar-hi imbricat.

#!/bin/bash
# Demana a l'usuari que introdueixi una edat
echo -n Introduïu la vostra edat:
llegir l'edat

if [ $edat -ge 18 ]; aleshores
echo Tens dret a votar.
if [ $edat -ge 65 ]; aleshores
echo També teniu dret a les prestacions per a la gent gran.
altra cosa
echo Encara no sou elegible per a les prestacions per a la gent gran.
ser
altra cosa
echo Encara no tens dret a votar.
ser

Explicació:

  • #!/bin/bash : Aquesta línia és un shebang que indica que l'script s'ha d'interpretar i executar mitjançant l'intèrpret d'ordres Bash.
  • # Demana a l'usuari que introdueixi una edat : Aquest és un comentari que indica el propòsit de la línia següent.
  • echo -n Introduïu la vostra edat: : Aquesta línia imprimeix el missatge Introduïu la vostra edat: al terminal sense passar a la següent línia. L'usuari introduirà la seva edat a la mateixa línia.
  • llegir l'edat : Aquesta línia llegeix l'entrada de l'usuari i l'assigna a la variable 'edat'.
  • if [ $edat -ge 18 ]; aleshores : Aquesta és una declaració if que verifica si el valor de 'edat' és superior o igual a 18.
    • $edat : representa el valor de la variable 'edat'.
    • -ge : Significa major o igual a en el context de la comparació numèrica.
    • 18 : el valor que es compara.
  • echo Tens dret a votar. : Si la condició de la línia anterior és certa, aquesta línia s'executarà, imprimint Tens dret a votar. a la terminal.
  • if [ $edat -ge 65 ]; aleshores : Dins del primer bloc if, aquesta és una altra instrucció if que verifica si el valor de 'edat' és superior o igual a 65.
    • $edat : representa el valor de la variable 'edat'.
    • -ge : Significa major o igual a en el context de la comparació numèrica.
    • 65 : el valor que es compara.
  • echo També teniu dret a les prestacions per a la gent gran. : Si la condició de la declaració interior si és certa, aquesta línia s'executarà, imprimint També teniu dret a les prestacions per a la gent gran. a la terminal.
  • altra cosa : Si la condició de la instrucció if interna és falsa, l'script salta al bloc else dins de la instrucció if externa.
    • echo Encara no sou elegible per a les prestacions per a la gent gran. : Aquesta línia s'executa si el valor de 'edat' no és superior o igual a 65, imprimint Encara no teniu dret a les prestacions per a la gent gran. a la terminal.
  • ser : Això significa el final del bloc interior if-else.
  • altra cosa : Si la condició de la instrucció if externa és falsa, l'script salta al bloc else.
    • echo Encara no tens dret a votar. : Aquesta línia s'executa si el valor de 'edat' no és superior o igual a 18, imprimint Encara no teniu dret a votar. a la terminal.
  • ser : Això significa el final del bloc exterior if-else.

Sortida:

imbricat-si utilitza Bash

imbricat-si utilitza Bash

Preguntes freqüents i algunes notes sobre CONDITION

Aquestes són algunes coses que he de tenir en compte mentre escric condicions de prova a bash.

1. Assegureu-vos que hi ha espais en blanc entre els claudàtors i la declaració de verificació/comparació real.

Per exemple, el següent no funcionarà.

if [$x==0] 

Bash informarà d'un error sobre a desaparegut] .

2. Finalitzeu sempre la línia abans d'afegir una paraula clau nova, com ara aleshores.

Si, aleshores, else, elif i fi són paraules clau d'intèrpret d'ordres, el que significa que no es poden utilitzar a la mateixa línia. Posa un ; entre la instrucció anterior i la paraula clau, o inicieu una línia nova amb la paraula clau.

3. Per utilitzar moltes condicions en una instrucció, utilitzeu operadors lògics.

Podem utilitzar operadors lògics AND(&&) o lògics OR(||) per utilitzar diverses condicions.

Per exemple:

if [[ $x -ge $y ]] && [[ $x -ge $z ]]; then  echo 'x is greatest' fi 

Aquí, -ge és una abreviatura de major que o igual a

4. Com comparar cadenes en una instrucció Bash if?

Utilitzeu el ` => `> operador per a la igualtat de cadenes i ` !=`> per la desigualtat.

Per exemple:

if [ '$string1' = '$string2' ]; then  # Code to execute if strings are equal else  # Code to execute if strings are not equal fi 

5. Puc utilitzar expressions regulars a les declaracions de Bash if?

Sí, podeu utilitzar el ` [[ ... ]]`> construir per a una concordança de cadenes més avançada amb expressions regulars.

Per exemple:

if [[ '$string' =~ ^[0-9]+$ ]]; then  # Code to execute if the string contains only numbers else  # Code to execute if the string does not contain only numbers fi 

6. Com comprovar si un fitxer existeix en un script Bash mitjançant una instrucció if?

Podeu utilitzar el ` -e`> bandera en la condició, com aquesta:

if [ -e 'filename' ]; then  # Code to execute if the file exists else  # Code to execute if the file does not exist fi 

7. Quina és la sintaxi d'una sentència if-else a les seqüències d'ordres Bash?

La sintaxi bàsica d'an 'si-una altra cosa'. La declaració en els scripts de Bash és:

if [ condition ]; then  # Code to execute if condition is true else  # Code to execute if condition is false fi 

8. Com puc utilitzar la instrucció elif en un script Bash?

El ` elif`> La declaració s'utilitza per comprovar condicions addicionals si la inicial if> condició és falsa.

Aquí teniu un exemple:

if [ condition1 ]; then  # Code to execute if condition1 is true elif [ condition2 ]; then  # Code to execute if condition2 is true else  # Code to execute if none of the conditions are true fi 

9. Com puc utilitzar operadors lògics (AND, OR) a les sentències Bash if?

Podeu utilitzar ` -a`> per AND lògic i ` -o`> per a l'OR lògic.

Per exemple:

if [ condition1 -a condition2 ]; then  # Code to execute if both conditions are true fi 

Conclusió

En aquest article hem parlat dels scripts de Bash, que és com una eina molt útil per fer que el vostre ordinador faci les coses automàticament. Aquest article ens va ensenyar sobre la declaració if a Bash, que és com una persona que pren decisions als scripts. Vam aprendre els conceptes bàsics, vam veure exemples com comprovar si un número és parell o esbrinar si algú pot votar i, fins i tot, vam explorar coses més elegants com gestionar moltes condicions o posar declaracions si les unes a les altres. L'article donava explicacions, exemples clars i responia preguntes habituals per ajudar-nos a millorar l'ús dels scripts de Bash. La clau és tenir cura amb detalls com l'espaiat i les regles especials, de manera que els nostres scripts funcionin sense problemes i facin que les tasques siguin més fàcils de gestionar a l'ordinador.