Jump to content
YOUR-AD-HERE
HOSTING
TOOLS
992Proxy

Locked Programando en Bash – parte 2


dEEpEst

Recommended Posts

Credits: Juan Carlos Ortiz

 

 

[HIDE-THANKS]

El condicional If

 

La función de If es la de aplicar un filtro y realizar una operación o tarea para cada tipo de filtro aplicado. Su estructura es la siguiente:

 

[LENGUAJE=bash]If [ condición ]; then

comandos

elif [ condición ]; then

comandos

else;

comandos

fi[/LENGUAJE]

 

Se muestra un ejemplo junto al ciclo For en su respectiva sección.

 

Ciclos

 

1. While: ejecutará todos los comandos especificados entre do y done mientras la condición sea verdadera. Si queremos pasarle operadores de comparación, la expresión deberá encontrarse entre corchetes.

 

[LENGUAJE=bash]while CONDICIÓN/COMANDO

do

comandos

done[/LENGUAJE]

 

Ejemplo: tabla de multiplicar de un número

 

 

[LENGUAJE=bash]#!/bin/bash

 

X=1

echo “Ingresa un número y presiona ENTER”

read M

#El ciclo controla que X sea menor o igual a 10

while [ $X –le 10 ]

do

#En R almacenamos la multiplicación de X por M

R=$[X*M]

#Se imprime dicha multiplicación en pantalla

echo “$M * $X= $R”

#Con let, incrementamos el valor de X en 1 unidad

let X=$X+1

done[/LENGUAJE]

 

2. For: almacena una lista de elementos en una variable, la cual será usada para realizar ciertas operaciones con cada ciclo.

 

[LENGUAJE=bash]for VARIABLE in ELEMENTOS

do

comandos

done[/LENGUAJE]

 

Ejemplo: programa que copia un archivo de una carpeta hacia otra, reemplazando un archivo viejo.

 

[LENGUAJE=bash]#/bin/bash

#Establecemos directorios de origen y destino

ORIGEN=/home/usuario/Descargas

DESTINO=/home/usuario/Documentos

#Nos posicionamos en el de origen

cd $ORIGEN

#De todos los archivos, solo queremos aquel que se #llame ARCHIVO

for ARCHIVO in *

do

ARCH-DESTINO= “$DESTINO/$ARCHIVO”

# -f nos filtra los archivos regulares, ya que de

#nada nos sirven los directorios. –nt nos filtra

#los archivos “más nuevos” que aquellos

#encontrados en la carpeta destino

if [ -f $ARCHIVO ] && [ $ARCHIVO –nt $ARCH-DESTINO ]; then

echo “Copiando $ARCHIVO…”

#copiamos el archive con cp

cp $ARCHIVO $ARCH-DESTINO

fi

done

#Hacemos cd para salir de la carpeta de origen

cd[/LENGUAJE]

 

Otro ejemplo: script donde el usuario debe adivinar un número al azar generado por la computadora.

 

[LENGUAJE=bash]#/bin/bash

#Se genera un número aleatorio del 1 al 10, se lo #guarda en AZAR

AZAR=$[$RANDOM%10+1]

while [ 1 ]

do

echo –n “Ingrese un numero: “

read NUM

#Compara si el número elegido por el usuario es #igual a AZAR; recordemos usar $ para evaluar los #valores de las variables y no sus nombres

if [ “$NUM –eq “$AZAR” ]; then

echo “Acertaste!”

#break permite finalizar el ciclo while

break

#Si el número es menor a AZAR

elif [ “$NUM –gt “$AZAR” ]; then

echo “Es menor”

“Sino, es más grande que AZAR

else

echo “ES mayor”

fi

done[/LENGUAJE]

 

3. Until: bastante similar en estructura al While, except que el código siempre se ejecuta mientras la evaluación de la condición sea negativa, es decir, el programa sigue ejecutándose “hasta que sucede la condición”

 

[LENGUAJE=bash]until CONDICIÓN/COMANDO

do

comandos

done[/LENGUAJE]

 

Ejemplo: imprimir los números del 10 al 20 en orden descendente

 

[LENGUAJE=bash]#!/bin/bash

CONT=20

#Mientras el contador sea menor que 10 (-lt, “lower #than”) se ejecuta el código

until [ $CONT -lt 10 ]; do

echo “CONTADOR $CONT”

#A CONT se le resta una unidad

let CONT-=1

done[/LENGUAJE]

 

4. Select: este último ciclo es un caso especial, ya que es usado generalmente para realizar menúes de forma rápida. Trabaja de forma similar al ciclo For.

 

[LENGUAJE=bash]select VARIABLE in LISTA

do

comandos

done[/LENGUAJE]

 

Ejemplo: darle al usuario la posibilidad de continuar o finalizar el script.

 

[LENGUAJE=bash]#!/bin/bash

#item es una variable que responde a lo que el

#usuario elige, Continuar y Finalizar son las

#opciones que tiene disponible, aunque pueden ser

#agregadas otras más

 

select item in Continuar Finalizar

do

#Si el usuario elige finalizar el programa, entonces con break salimos del ciclo.

if [ $item = "Finalizar" ]; then

break

fi

done[/LENGUAJE]

[/HIDE-THANKS]
Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.