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 }