sábado, 25 de agosto de 2012

Curso scripting bash condicionales (If-Then)

No han tenido ganancias(comentarios,muchas visitas) mis tutoriales de bash :(,sera porque hoy en dia ya no usan bash, o porque vamos en lo mas simple,o porque no los hago bien |:(

Bueno,los voy a seguir poniendo pero como estoy enseñando poco en cada entrada,le dedicare una a cada parte de bash,pero al final,hare un tipo sitemap con todas las entradas de programacion bash.

Ya si no funciona los cancelo como los de python,que no tuvieron ni un solo comentario :(

Bueno esta es la parte numero 3

Parte 1


Parte 2

Y en esta ocasión veremos


Condicionales (if,fi,then,else,elif)

Bash es un lenguaje de programación como cualquier otro,y igual que en otro lenguaje incluye los condicionales para poder ejecutar una fracion de codigo si este se cumple o ejecutar otra fraccion de codigo si no se cumple.

Igual que en otros

Bueno en bash los condicionales se definen de esta manera

#!/bin/bash
# Condicion
if [ condicion1 = condicion2 ]
then
codigo a ejecutar
exit 0
fi

Explicación

if es si del ingles,en texto plano y en español seria:

 si la condicion 1, es igual a la condicion 2, ejecuta el condigo de abajo

Pero esto va mas aya ya que requiere el valor then para cerrar la condición if y ademas el valor exit 0 para cerrar el código,y el valor fi para cerrar toda la condicion desde que inicia if


#!/bin/bash
# Condicion
if [ condicion1 = condicion2 ] # Evaluando la condición(debe ir entre [])
then # Se cierra la evaluación
codigo a ejecutar # Codigo a ejecutar si se cumple
exit 0 # Cerrar cuando se cumpla
fi # Se cierra toda la condicion

Ahora un ejemplo de esto mezclado con las variables de la entrada pasada, seria así:


#!/bin/bash

A=1
B=2

if [ $A = $B ]

then

        echo 'Si es'

        exit 0

fi

Cópienlo y ejecútenlo como vimos en la entrada uno

Al ejecutarlo no hará nada ya que no se cumplió,me explico:

#!/bin/bash

# Definiendo Variables

A=1
B=2
# No son iguales
if [ $A = $B ] # Juzgando las condiciones( es A igual a B),el signo $,es para llamar la variable
# No son iguales

then

        echo 'Si es'

        exit 0

fi

Como vimos no son iguales A y B así que no hará nada porque lo que le indicamos, lo indicamos para que lo hiciera si se cumplía(y no se cumplió)

Ahora copien y ejecuten este

#!/bin/bash

# Definiendo Variables

A=1
B=1
# No son iguales
if [ $A = $B ] # Juzgando las condiciones( es A igual a B),el signo $,es para llamar la variable
# Si son iguales

then

        echo 'Si es igual A y B'

        exit 0

fi

¡Que diferencia!

Ahora,como vimos en el primer ejemplo no se ejecuta nada porque no se cumple la condición y en el segundo si se ejecuta porque se cumple la condición,¿pero como hacer para que se ejecute un código si se cumple y otro si no se cumple?

La respuesta es doble ya que hay dos respuestas

1.Sacar el código dela condición if fi como se hace en javascript y este se ejecutara al no pertenecer al codigo

Por ejemplo(Cópienlo y ejecútenlo):

#!/bin/bash

# Definiendo Variables

A=1
B=3

if [ $A = $B ] # Juzgando las condiciones( es A igual a B),el signo $,es para llamar la variable
# No son iguales

then

        echo 'Si, es igual A y B'

        exit 0

fi # Termina la condición

# Ahora se ejecuta esto

echo 'No es igual'

exit

¿Pero si lo queremos en la misma condicion?

Esa respuesta es la misma que la segunda opción y es usar el comando else,que es sino, en lugar,etc

Por ejemplo en texto plano seria:

¿A y B son iguales?,(if)si son ejecuta esto echo 'Si es igual A y B' si no (else) ejecuta esto echo 'No son iguales'

Ejemplo(Copia y Ejecuta)

#!/bin/bash

# Definiendo Variables

A=1
B=3

if [ $A = $B ] # Juzgando las condiciones( es A igual a B),el signo $,es para llamar la variable
# ¿Son iguales? No son iguales

then

        echo 'Si es igual A y B'

        exit 0

# Ahora se ejecuta esto

else # Si no

echo 'No es igual'

exit

fi # Termina la condición

Así  de fácil

Vamos a ponerle mas emocion a esto con la interaccion de nosotros,vamos a usar el comando read para comunicarnos con el script
Por ejemplo si queremos jugar un poco vamos a usar el comando read para darle un valor a la variable desde la misma consola al momento de ejecutarla

Ejemplo(Copia y ejecútalo):


#!/bin/bash

# Definimos nuestro nombre y lo guardamos en una variable
tu_nombre="Escribe tu nombre" # Edita esta parte

echo 'Como te llamas'
# Nos pregunta
read nombre
# Si lo que escribas es igual a la variable con tu nombre...
if [ $nombre = $tu_nombre ]
then
echo 'Bienvenido' # Se ejecuta esto
exit 0
else # Si no...
echo 'Largo de aquí' # Se ejecuta esto
fi


Ahora, no solo existe if y else también existe un punto medio llamado elif,que lo podríamos usar de esta manera,por ejemplo

#!/bin/bash
echo 'Adivina el numero'
echo 'Una pista esta entre el 1 y el 10'
read numero

if [ $numero = 6 ]
then
echo 'Acertaste'
exit 0
elif [ $numero = 5 ]
then
echo 'Casi, intenta de nuevo'
else
echo 'No,intenta de nuevo'
fi


Como vemos para intentar de nuevo,necesitamos ejecutar de nuevo el código una y otra vez,para que no suceda esto tenemos que hacer uso de un bucle,pero esto lo veremos después

Aquí una muestra de lo que veremos mas adelante(copien y ejecuten)






#!/bin/bash
echo 'Quieres ver el calendario'

function Calendario

{

      cal

}

function No

{

     echo 'Entonces vete a visitar Tiempo de Tux'
   
}

read opcion

case $opcion in

      si|SI)

         Calendario

      ;;

      no|NO)

         No
      ;;


       *)

         echo 'Esa no es una opcion'


  esac



6 comentarios:

  1. Me viene bien y quiero q sea asi basico :)
    Thanks

    ResponderBorrar
    Respuestas
    1. Gracias por comentar :D

      Me gusta hacerlo fácil para que sea una introducción a el conocimiento,la simplicidad ayuda a el entendimiento y no necesariamente se aprende algo facil

      Saludos

      Borrar
  2. brtoher como que has cancelado lo de python man estan bravasos lo de bash creeme a ver si me ayudas con lo de python gracias y mil gracias mas por tuayuda a conocer mas a fondo el mundo de linux exitos

    ResponderBorrar

Los comentarios serán revisados antes de ser publicados.