Bash: Les condicions (if-then-else)

Hello 

En aquesta ocasió els mostraré com fer un script amb condició en xoc, La qual cosa traduït és:

Si es compleix X cosa que vostès vulguin, es fa I acció, si no es compleix llavors es fa una altra acció.

Simple l'explicació no 

Ara, he pensat durant uns minuts algun exemple per usar en aquest tutorial, se m'ha ocorregut el següent dilema / problema / situació:

Som a la xarxa de la nostra empresa, i desitgem saber si X ordinador està connectat a la xarxa. Per això fem una script que farà fer ping cap a aquest ordinador, i si està en xarxa (o sigui, si torna el fer ping) Ens dirà que SÍ, està en xarxa, en cas contrari (o sigui, que no estigui en xarxa) ens dirà que NO està en xarxa.

Un cop fet això, ara us explicaré com fer un cicle amb condicions 

Eh aquí el codi:

ping -c 1 DIRECCION-IP
if [ $? -ne 0 ]; then
echo "No está en red"
else
echo "Sí está en red"
fi

No us preocupeu, us ho explico al detall 

fer ping és el comandament que farem servir, i ens dirà si aquesta PC està en xarxa. Per dir-li què PC volem comprovar si està o no en xarxa, hem de canviar DIRECCIÓ-IP per òbviament, l'adreça IP de PC que desitgem comprovar.

Com veuen, vaig posar «-c 1«, La qual cosa ens cal. Quan fem ping a un ordinador, aquesta acció no s'atura (el ping) fins que nosaltres mateixos pressionem [Ctrl] + [C], De manera que posant «-c 1»Li vam indicar que faci només una verificació (només un intent de ping) i cap altre, això farà que s'aturi a l'instant, o sigui ... comprovarà si l'ordinador està en xarxa només una vegada.

Si tenen dubtes amb això, sense pena… ho diuen i jo amb MOLT gust els hi explico de nou 

Ara ve el cicle, ja que el que acabo d'explicar no és res més que una ordre/acció normal 

if [ $? -ne 0 ]; then
echo "No está en red"
else
echo "Sí está en red"
fi

Perquè entenguin això, us explicaré un detall summament important de Bash 

Els més coneixedors del tema em podrien titllar d'equivocat o alguna cosa així, però bé, això ho escric per als novells o menys experts, mentre ells ho entenguin llavors genial 

Passa que com a xoc és una mena 0 y 1, És a dir, o estàs viu o estàs mort, quan s'executa una ordre o acció: O es va executar bé sense problemes (1), o hi va haver algun problema o error (0).

Nosaltres vam efectuar X acció o ordre, i això que vam fer pot haver-se efectuat bé o malament, puc haver tingut error o no, i aquí és on hi ha el detall 

Si el que enviem a fer (en aquest cas: ping -c 1 DIRECCIÓ-IP) No va donar error i es va efectuar bé, llavors retornarà el valor: 1 . En cas contrari, i que l'acció (o sigui, el ping) no fos reeixit, tornarà valor 0.

 I finalment, el que significa el codi anterior és això:

Si es va retornar valor 0 llavors

Posa en pantalla el text: «No està en xarxa»

Altrament (i que es retorni NO 0, sinó 1)

Posa en pantalla el text: «Si està en xarxa«

Això que els acabo d'explicar, ens servirà en un futur per a moltíssimes coses, ja que és realment útil poder dir que si X acció va donar error, feu I acció, i en cas que X acció no hagi donat error, que faci Z acció.

Sé que a alguns podria liaros una mica, pel que he intentat explicar-ho de diverses formes diferents, intentant que tots ho entenguin d'una via o una altra. En cas que algú es quedi amb dubtes, m'ho fa saber.

Ara, fem el nostre script 

Hem de seguir els passos d'aquest tutorial: Bash: Com fer un script executable

Després copiem el següent codi en aquest arxiu (guió.sh), I a la fi posem «sortir de»(Sense les cometes):

ping -c 1 DIRECCION-IP
if [ $? -ne 0 ]; then
echo "No está en red"
else
echo "Sí está en red"
fi

Les ha de quedar així (recordin que han d'haver canviat DIRECCIÓ-IP per la IP que desitgen):

Aquí poden veure l'script en execució:

% CODE1%

Com veuen, a la fi ens diu «Sí està en xarxa» 

L'important aquí és que en realitat entenguin això de les condicions, de manera que els deixo un altre codi per tornar a explicar-ho, però des d'un altre punt de vista.

read "texto"
if [ "$texto" = "3" ]; then
echo "Correcto"
else
echo "Incorrecto"
fi

El que això significa és simple, els deixo línia a línia l'explicació:

1ra línia: El que escrivim, aquest serà el valor de la variable «text»(Sense les cometes).

2a línia: Comprova si el contingut de la variable (el que acabem d'escriure) és 3.

3ra línia: En cas de ser 3, Ens mostrarà el text «Correcte»(Sense les cometes).

4ta línia: Altrament (o sigui, en cas que no haguem escric 3).

5ta línia: Ens mostrarà el text «incorrecte»(Sense les cometes).

6ta línia: Fi de la condició.

Com han pogut adonar-se, si posem trobo i seguidament entre cometes dobles («) Un text, això farà que es mostri a la terminal aquest text. O sigui, si posem:

echo "esto es una prueba"

Ens mostrarà a la terminal el text: això és una prova

Però tornant a aquest segon exemple, us mostraré la utilitat (i execució) d'aquest segon script amb alguna cosa MOLT simple  … el típic «quant és 1 + 2?«

Els deixo el codi de l'script complet:

#!/bin/bash
# -*- ENCODING: UTF-8 -*-
echo "¿Cuánto es 1 + 2?"
read "texto"
if [ "$texto" = "3" ]; then
echo "Correcto"
else
echo "Incorrecto"
fi
exit

Els deixo aquí com funciona l'script:

% CODE2%

I bé ... res més que afegir.

Això és una cosa elemental, simple sí, però tot i així he intentat explicar-ho tan bé com sigui possible, ja que no tots tenen ànima de programador, i moltes vegades necessitem fer scripts com aquests (o similars), de qualsevol manera espero que aquest article li sigui d'utilitat a algú 

Qualsevol dubte o pregunta, queixa o suggeriment si us plau, la deixen aquí, amb molt de gust els responc i així, tots aprenem una mica més 

Salutacions