Volver al índice


while

Ejecuta una seria de comandos mientras que una determinada condicion sea cumpla. Algunos scripts ilustrativos:

1.-

#!/bin/bash

RESPUESTA=s

while [ $RESPUESTA = s ]

do

    echo "Introducir nombre: "

    read NOMBRE

    echo "Hola $NOMBRE"

    echo

    echo "¿Desea continuar? (s/n)"

    read RESPUESTA

done

2.-

#!/bin/bash

while [ "$OPCION" != 5 ]

do

    echo

    echo "[1] Listar directorio"

    echo "[2] Directorio donde te encuentras"

    echo "[3] fecha de hoy"

    echo "[4] Usuarios conectados"

    echo "[5] Salir"

    echo

    read -p "Ingrese una opción: " OPCION

    echo

    case $OPCION in

        1) ls;;

        2) pwd;;

        3) date +%D ;;

        4) who;;

        5);;

        *) echo "Opción ingresada no valida, intentelo de nuevo";;

    esac

done

exit 0

3.-

#!/bin/bash

# imprimir números del 1 al 10

LIMITE=10

a=1

while [ "$a" -le $LIMITE ]

do

  echo "$a "

  let "a+=1"

done

4.-

Leer un archivo linea a linea:

#!/bin/bash

while read linea

do

   echo "---> $linea "

done < archivo.txt

5.-

Especificando un separador [:]

#!/bin/bash

while IFS=: read user pass uid gid full home shell

do

echo -e "$full :\n\

        Pseudo : $user\n\

        UID :\t $uid\n\

        GID :\t $gid\n\

        Home :\t $home\n\

        Shell :\t $shell\n\n"

done < /etc/passwd

6.-

Leer un archivo pasado como parámetro, descartar las lineas en blanco y colorear alternativamente las siguientes en amarillo y rojo.

#!/bin/bash

COLOR=1

while read linia

do

    if [ -z "${linia}" ]

    then

        continue

    fi

    if [ $COLOR -eq 0 ]

    then

        echo -e "\e[1;30;41m$linia\033[0m" #VERMELL - 0

        COLOR=1

    else

        echo -e "\e[1;30;43m$linia\033[0m" #GROC - 1

        COLOR=0

    fi

done < $1

Volver al índice