Curso de Linux N16. Programación en Bash 003: Condicionales if, if-else, elif, case, and, or y negación
hive-154226·@rafaelaquino·
0.000 HBDCurso de Linux N16. Programación en Bash 003: Condicionales if, if-else, elif, case, and, or y negación
Cordiales Saludos <center>  </center> <center>  </center> Los condicionales es un tema muy importante dentro de la programación ya que nos permite escribir código que se puede bifurcar o que de acuerdo una condición el script hace algo, si es verdadera la evaluación de la condición y si es falsa realiza otra acción. Para la utilización de los Operadores Relacionales con números enteros les recomiendo que usen las opciones precedidos por un signo - que representan las comparaciones que se realizan, por ejemplo: **-gt, -lt** que respectivamente significan **mayor que** y **menor que**. Usar: **-gt** equivale a > Mayor que Usar: **-lt** equivale a < Menor que Usar: **-ge** equivale a >= Mayor o igual que Usar: **-le** equivale a <= Menor o igual que Usar: **-eq** equivale a == Igual que Usar: **-ne** equivale a != No es igual a / diferente <center>  </center> ### if If es el equivalente a **Si** (Si ocurre algo, haz esto). Si se cumple la condición entra al bloque de instrucciones que están dentro de la identación. En esta ocasión coloqué cuatro ejercicios donde al evaluar la condición todas arrojan resultado verdadero, por tanto todas visualizan el mensaje. Estos ejercicio se realizan para entender mejor el **if**, pero si por el contrario no se cumpliera la condición, no entraría dentro del condicional, por tanto no visuaizaría nada. <center>  </center> Ejecución del código ~~~ $ bash script_17.sh x=100 es mayor que y=10 a=20 es menor a b=30 N1=500 es igual a N2=500 num_1=123 es diferente a num_2=321 ~~~ <center>  </center> ### if - else En este caso el **if-else** equivale a: **Si (if)** se cumple la condición, realiza una acción (o varias) **caso contrario o sino (else)** realiza otra acción. En el siguiente ejercicio como no se cumple la condición, es decir el número 3 no es mayor que el numero 7, se visualiza el caso contrario (else). <center>  </center> Ejecución del código ~~~ $ bash script_18.sh x=3 No es mayor que y=7 ~~~ <center>  </center> ### elif Para agregar otro condicional dentro de un **if** podemos agregar el **elif**. Es como un caso contrario pero agregando en la misma sentencia un **if**, es decir condicionándolo. Veamos los recuadros amarillos donde tenemos el mismo código pero valíéndome de cambiar la variable **x** se comprende mejor el paso por cada una de los bloques. En este caso se necesita un poco más de practica, para entenderlo mejor. <center>  </center> Ejecución del código ~~~ $ bash script_19.sh Pasa por aqui - primer if porque X=1000 Entro a elif porque x=100 Estamos en caso contrario - else x=-4 ~~~ <center>  </center> ### case La selección de caso es muy utilizado en los menú, o cuando necesitamos evaluar muchos valores, con un solo caso contrario representado por: *) En este caso cambiando el valor de **x** se visualiza mejor el ejemplo. <center>  </center> Ejecución del código ~~~ $ bash script_20.sh X = 100 X = 200 Cualquier valor, aqui x=5 ~~~ <center>  </center> ### Comandos lógicos ##### and && Con el Operador lógico **&&** que significa **and**, para que se cumpla la condición deben ser verdaderas las dos condiciones. Si una de las condiciones no es verdadera no se cumple la condición. En el siguiente ejercicio en el primer **if** se cumple la condición porque las dos condiciones se cumplen. En el segundo **if** no se cumple la segunda condición, por tanto se ejecuta el caso contrario es decir el bloque del **else**. <center></center> Ejecución del código ~~~ $ bash script_21.sh Se cumplen las dos condiciones No se cumple una de las condiciones ~~~ #### or || En el caso del **or** para que se cumpla la condición por lo menos una de las condiciones debe ser verdadera. En el siguiente ejercicios los dos primeros **if** se cumple una de las condiciones por tanto se visualiza el mensaje. En el último **if** Como no se cumple ninguna de las condiciones entonce se ejecuta el caso contrario, es decir el **else**. <center>  </center> Ejecución del código ~~~ $ bash script_22.sh or - Se cumplen la primera condicion or - Se cumple la segunda condicion Aqui entra ~~~ ### Negación ! En la negación se evalúa la condición de forma negativa, es decir se invierte la condición. En el primer **if** x es igual a 10, cumpliéndose la condición y visualizando el mensaje "Se cumple la condición, sin negación" En el segundo igualemente x es igual a 10, pero al colocar la negación **!** se evalúa como x es deferente a 10, por tanto entra al caso contrario, es decir al **else**. </center>  </center> Ejecución del código ~~~ $ bash script_23.sh Se cumplen la condición, sin negación Entra aqui por la negación ~~~ Hasta aquí nuestra publicación. Esto no termina aquí, veremos más adelante ejercicios más complejos. El fin de esta publicación es entender el funcionamiento de los condicionales de la forma mas sencilla posible. Queda ahora practicar revisando estos ejercicios y tratar de ejercitarnos con nuevos ejercicios creado o ideados por nosotros mismo. >IMPORTANTE: Los comando vistos aquí y en próximas publicaciones están limitados para mostrarlos y conceptualizarlos para nuestro quehacer diario. Cada comando tiene muchas opciones que debemos investigar por nuestra propia cuenta cuando estemos trabajando con ellos. Aprovechemos el internet para conocer en profundidad el comando que estemos estudiando y en primer orden no olvidemos lo potente y todo lo que nos brinda el comando **man** para conocer la sintaxis y todo lo relacionado con todos los comandos que tenemos en nuestro sistema sin recurrir a internet. <center>  </center> Para fortalecer los conocimientos con respecto a los condicionales te invito a que revises mi publicación de python [Operadores Lógicos](https://peakd.com/hive-154226/@rafaelaquino/curso-de-programacion-basica-n09-operadores-logicos). --- Todos a practicar, incluyéndome! Nos vemos en la próxima publicación... [Mi Twitter](https://twitter.com/Rafa_elaquino)
👍 amaponian, deadleaf, pixelfan, sofiaquino98, amigoponc, felixmarranz, aurodivys, globalcurrencies, escuadron201, shadowmyst, developspanish, lumpymoon, rickyuribe, paula1411, criptocuates, mortsanchezzz, carlosbp, minnowsupport, waivio.curator, makinstuff, warpedpoetic, victoriabsb, zaxan, paolazun, lovely.logic, clayboyn, fourfourfun, syibral-malasy, crimsonclad, anarcist69, bigdizzle91, blarchive, anarcist, bilpcoinbpc, churchoftheway, insertcoinxyz, elvys, omarmontes, joeyarnoldvn, ubaldonet, lemouth, steemstem-trig, steemstem, dna-replication, roelandp, minnowbooster, howo, aboutcoolscience, robotics101, stemsocial, aidefr, lamouthe, metabs, curie, edb, helo, samminator, tsoldovieri, postpromoter, kenadis, madridbg, fragmentarion, geopolis, charitybot, meanbees, nattybongo, pboulet, plicc8, hive-fr, abu78, timix648, stem.witness, r00sj3, intrepidphotos, alexdory, flugschwein, francostem, crowdwitness, zeruxanime, noelyss, inibless, techslut, walterjay, valth, dhimmel, iansart, mobbs, sustainablyyours, alexander.alexis, abigail-dantes, zonguin, splash-of-angs63, sco, emiliomoron, de-stem, charitymemes, deholt, temitayo-pelumi, pinkfloyd878, ricardoeloy, hive-fr-engine, cnfund, enzor, takowi, minerthreat, rt395, gunthertopp, irgendwo, croctopus, doctor-cog-diss, empath, aabcent, boxcarblue, jayna, sorin.cristescu, reverio, meno, crypt0gnome, modernzorker, rhemagames, putu300, cloh76, cryptofiloz, aslamrer, migka, neumannsalva, bartosz546, federacion45, eliel, thelordsharvest, cliffagreen, kylealex, lis0426csm, dynamicrypto, sbtofficial, utube, qberry, detlev, cheese4ead, bitrocker2020, enjar, princessmewmew, quinnertronics, seinkalar, laro-racing, hetty-rowan, steemean, tfeldman, arunava, thelittlebank, dcrops, tanzil2024, gmzorn, rocky1, aries90, felt.buzz, revo, punchline, armandosodano, bscrypto, stayoutoftherz, steemwizards, sunsea, steveconnor, fineartnow, thecryptodrive, fotogruppemunich, steemstorage, brianoflondon, investingpennies, braaiboy, justyy, zyx066, podping, metroair, diabonua, sportscontest, photohunt, superlotto, therising, neneandy, pandasquad, meritocracy, doifeellucky, baltai, yixn, jmsansan, sumant, rmach, mcsvi, ibt-survival, elevator09, sanderjansenart, mafufuma, atheistrepublic, lightpaintershub, jerrybanfield, lordvader, juecoree, stem-espanol, iamphysical, miguelangel2801, delpilar, tomastonyperez, erickyoussif, acont, aleestra, lorenzor, ufv, azulear, sandracarrascal, ydavgonzalez, elvigia, josedelacruz, andrick, uche-nna, reinaseq, fran.frey, giulyfarci52, psicoluigi, sweetval, dandays, nfttunz, eric-boucher, robertbira, amansharma555, eternalsuccess, ennyta, endopediatria, bluefinstudios, aqua.nano,