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
}