logo

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, oncondition>és l'expressió que s'avalua. Si la condició és certa, el codi dins del fitxerthen>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ó:



diferència entre lleó i tigre
  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 variablex>.
  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, oncondition>és l'expressió que s'avalua. Si la condició és certa, el codi dins del fitxerthen>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

Elif-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 laif-elif-else>declaració. El codi dins d'aquest bloc s'executarà sicondition1>és cert.
  • # Codi que s'executarà si la condició1 és certa : Substituïu aquest comentari pel codi real que voleu executar sicondition1>és cert.
  • elif [condició2]; aleshores : Sicondition1>és fals, l'script comprovacondition2>. Sicondition2>é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 sicondition2>és cert.
  • elif [condició3]; aleshores : Si tots doscondition1>icondition2>són falses, l'script comprovacondition3>. Sicondition3>é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 sicondition3>és cert.
  • altra cosa : Si cap de les condicions anteriors (condició1, condició2, condició3, etc.) és certa, el codi dins delelse>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 laif-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 'if-elif-else'.

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

Bash Anidat if Declaració

A Bash, podeu utilitzar imbricatif>enunciats per crear estructures condicionals més complexes. Aquí teniu la sintaxi d'un imbricatif>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ó:

puntuació de precisió de sklearn
  • si [condició1]; aleshores : Això és l'exteriorif>declaració. Sicondition1>é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 sicondition1>és cert.
  • si [condició2]; aleshores : Dins del bloc de l'exteriorif>afirmació, hi ha un interiorif>declaració. Sicondition2>é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 sicondition2>és cert.
  • altra cosa : Sicondition2>a l'interiorif>declaració és falsa, el codi dins deelse>bloc de l'interiorif>s'executa la instrucció.
  • # Codi que s'executarà si la condició 2 és falsa : Substituïu aquest comentari pel codi real que voleu executar sicondition2>és fals.
  • ser : Això marca el final de l'interiorif>declaració.
  • altra cosa : Sicondition1>a l'exteriorif>declaració és falsa, el codi dins deelse>bloc de l'exteriorif>s'executa la instrucció.
  • # Codi que s'executarà si la condició1 és falsa : Substituïu aquest comentari pel codi real que voleu executar sicondition1>és fals.
  • ser : Això marca el final de l'exteriorif>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.

on trobo la configuració del meu navegador

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