Ejemplos de Bash

De GNU/Linux - UTN FRA - Especialización GNU/Linux

Acá veremos un par de ejemplo de script en bash.


En este ejemplo sencillo se pasa como parámetro un dispositivo (ej. /dev/tty1) y verifica si es un dispositivo de tipo carácter (-c).

 #!/bin/bash

 if [ -c $1 ]; then
   echo "Es un dis. de caracter"
 fi


Ejemplo de condición (if), se le pasan dos parametros que verifica si es menor igual y (-a) menor que 10.

 #!/bin/bash
 
 valor_producto_1=$1
 valor_producto_2=$2

 if [ ${valor_producto_1} -le ${valor_producto_2} -a ${valor_producto_1} -le 10 ]; then
  echo "El producto ingresado es menor o igual al producto2 y menor o igual a 10"
 fi


En este ejemplo le pasamos como parámetro un directorio, donde obtiene los archivos, directorios y enlaces donde por cada uno los cuenta.

 #!/bin/bash
 
 CANT_ARCHIVO=0
 CANT_DIR=0
 CANT_ENLACES=0
 
 ( cd $1
 for NOMBRES in `ls`
 do
   # Verifico si existe y es un archivo
   if [ -a "${NOMBRES}" ]; then
     CANT_ARCHIVOS=`expr ${CANT_ARCHIVOS} + 1`
   fi
 
   # Verifico si existe y es un directorio
   if [ -d "${NOMBRES}" ]; then
     CANT_DIR=`expr ${CANT_DIR} + 1`
   fi
 
   # Verifico si existe y es un enlace
   if [ -L "${NOMBRES}" ]; then
     CANT_ENLACES=`expr ${CANT_ENLACES} + 1`
   fi
 done
 echo "Cantidad de Archivos    : ${CANT_ARCHIVOS}"
 echo "Cantidad de Directorios : ${CANT_DIR}"
 echo "Cantidad de Enlaces     : ${CANT_ENLACES}"
 )


Un simple bucle (for) que va de 1 a 10 de a 2.

 #!/bin/bash
 
 for i in `seq 1 2 10`; do
   echo $i
 done


Ejemplo por el cual se pasa un parámetro y se obtiene el numero binario, la función es en forma recursiva.

 #!/bin/bash
 resultado()
 {
       resto=`expr $1 % 2`
       divi=`expr $1 / 2`

       if [ $divi -ge 1 ]; then
         binario=$binario$resto
         echo "DIVISION : $divi  RESTO : $resto"  
         resultado $divi
       else
         binario=$binario$resto
       fi
 }

 resultado $1
 echo $binario


En este ejemplo tenemos un menu principal, y una funcion que se encuentra en otro archivo.

 # vi menu.sh
   #!/bin/bash

   . ./mi_funciones.sh

   PS3="Elija las siguientes opciones : "
   OPCIONES="usuario opcion2 salir opcion3"
   select opt in $OPCIONES; do
     case ${opt} in
       salir)   echo "Gracias por usar este programa."
                exit
                ;;
       usuario) agregar
                ;;
     esac
   done


 # vi mi_funciones.sh
  #!/bin/bash
 
  function agregar()
  {
   echo -n "Nombre de usuario : "
   read nombre
   echo -n "Shell             : "
   read shell

   if [ `grep '^'$nombre':' /etc/passwd | wc -l` -eq 1 ]; then
     echo "El usuario ya existe."
   else
    clear
    useradd -m -s $shell $nombre
    if [ $? ]; then
      echo "Bien..."
    else
      echo "Incorrecto..."
    fi
   fi

   echo -n "Desea ingresar otro usuario (S/N) ?"
   read respuesta

   while [ $respuesta != 'S' ] && [ $respuesta != 'N' ]
   do
    echo -n "Desea ingresar otro usuario (S/N) ?"
    read respuesta
   done

   if [ $respuesta = 'S' ]; then
     agregar
   fi
 }
Herramientas personales