Declaració Bash "si més": tutorial i exemples

Utilitzant la instrucció if...else a Bash per a l'execució de codi condicional.

Bash (Bourne Again Shell) és un indicador d'ordres de l'intèrpret d'ordres i un llenguatge de script als sistemes operatius GNU/Linux. És el shell predeterminat per a la majoria de distribucions de Linux.

Les declaracions condicionals són vitals en qualsevol llenguatge de programació, tant compilades com amb guió. Permeten que l'usuari executi un fragment de codi basat en una condició predefinida, que és un dels fonaments de la lògica de programació. En aquest article, aprendrem a utilitzar el si una altra cosa declaració condicional a Bash.

Introducció

El si una altra cosa La declaració de Bash permet a l'usuari manipular el flux de codi en funció de les condicions. L'usuari pot especificar blocs de codi separats a executar, només un dels quals finalment s'executarà durant el temps d'execució, en funció de la condició corresponent que es compleixi.

Tingueu en compte que es poden especificar més de dues condicions, per a les quals elif es pot utilitzar la declaració. L'usuari pot donar qualsevol nombre de condicions utilitzant elif, i finalment una condició predeterminada utilitzant altra cosa bloc. Vegem més sobre això a la sintaxi i els exemples següents.

Sintaxi general

La sintaxi general per si una altra cosa declaració a Bash és:

si llavors  altra cosa  fi

Aquí, si el satisfà, és a dir, si retorna 0 (èxit), s'executa el bloc de codi 1. Si la condició no retorna 0, és a dir, retorna un estat d'error, s'executa el bloc de codi 2. El si una altra cosa el bloc acaba amb a fi declaració.

Per a diversos blocs corresponents a diverses condicions,elif s'utilitza:

si llavors  elif doncs  elif doncs  ... ... altra cosa  fi

Aquí, les condicions es comproven en ordre i s'executa el bloc de codi de la primera condició que retorna l'estat 0 (èxit). Per exemple. si retorna un estat diferent de zero (error), aleshores està comprovat. Si retorna l'estat 0, s'executa. Després d'això, no es comproven més condicions i l'execució del codi continua amb el codi després de fi declaració.

Si cap de les condicions retorna l'estat 0, al bloc else s'executa. Tingueu en compte que el bloc else és opcional. Si no es compleix cap condició, així com no altra cosa s'especifica el bloc, no s'executarà cap bloc de codi condicional i l'execució del codi continuarà amb el codi després de fi declaració, tal com es mostra al gràfic de flux següent.

Tingueu en compte que el aleshores La declaració s'ha d'utilitzar només després si i elif declaracions i no requerides després del altra cosa declaració.

Exemples

Per executar un bloc de codi si una variable té un valor particular:

x=0 si [$x -eq 0] llavors echo "El valor de X és 0" sinó echo "El valor de X no és 0" fi

Per comprovar si hi ha diversos valors:

x=2 if [ $x -eq 0 ] llavors echo "El valor de X és 0" elif [ $x -eq 1 ] llavors echo "El valor de X és 1" elif [ $x -eq 2 ] llavors echo "Valor de X és 2" sinó echo "El valor de X no és 0" fi

Les condicions poden ser qualsevol ordre de Linux. El bloc de codi corresponent s'executarà si l'ordre s'executa correctament.

si npm -v, feu ressò de "NPM present al sistema", sinó sudo apt install npm fi

A l'exemple anterior, ja que npm no s'ha instal·lat al sistema, l'ordre npm -v va retornar un estat diferent de zero. Per tant, l'execució del codi va entrar a altra cosa bloc, on instal·lem npm utilitzant apt gestor de paquets. Com podem veure, em va demanar que introduís la contrasenya i va començar la instal·lació de npm.

També podem niar un altre si una altra cosa bloc dins d'un si, altra cosa o elif bloc:

x=0 y=1 si [ $x -eq 0 ] llavors echo "X és 0" si [ $y -eq 1 ] llavors echo "Y és 1" sinó echo "Y no és 1" fi altrament echo "X és no 0" fi

Això és útil quan s'ha de comprovar un conjunt separat de condicions un cop es compleix una condició inicial.

Per exemple, el codi següent intenta instal·lar un programari de servidor web:

si nginx -v, feu ressò "NGINX ja està instal·lat". en cas contrari, si sudo apt install nginx, feu ressò de "La instal·lació de NGINX ha estat correcta". elif sudo apt install apache2 i després echo "La instal·lació d'APACHE2 és correcta". else echo "No es pot instal·lar cap programari web". fi

El codi primer comprova si Nginx ja està instal·lat al sistema. Si és així, només mostra un missatge i surt. Si no és així, prova d'instal·lar Nginx.

Si per algun motiu, Nginx no es pot instal·lar al sistema des del paquet, prova d'instal·lar Apache2. Si fins i tot Apache2 dóna error durant la instal·lació, surt mostrant un missatge que no s'ha pogut instal·lar cap programari.

De manera similar, un bloc imbricat es pot utilitzar dins d'un elif bloc també.

Executant si una altra cosa: Scripts i línia d'ordres

Similar a qualsevol codi Bash, el si una altra cosa La instrucció es pot utilitzar a l'intèrpret d'ordres Bash directament o des d'un fitxer de script d'intèrpret d'ordres executable. Un cop l'intèrpret de Bash troba un si, altra cosa o elif declaració, continua l'intèrpret d'ordres per permetre que l'usuari introdueixi el bloc de codi.

L'usuari també pot desar aquest codi en un fitxer de script i executar-lo.

El #!/bin/bash al començament especifica l'intèrpret que s'utilitzarà quan s'executa el fitxer. Encara que Bash és l'intèrpret d'ordres més utilitzat actualment, alguns usuaris prefereixen intèrprets d'ordre com zsh, que s'han d'especificar en lloc de bash a l'inici d'aquest fitxer.

Per donar permisos d'execució per a aquest fitxer, executeu:

chmod +x prova.sh

Finalment, per executar el fitxer, executeu:

./prova.sh

Conclusió

Similar a qualsevol llenguatge de programació, si una altra cosa La declaració és una característica fonamental de Bash. Aprendre el seu ús és molt important tant per escriure scripts bàsics com avançats.