Scripts en Bash: ejercicios resueltos de temperaturas y grupos de usuarios
Ejercicios de Bash: temperaturas y grupos de usuarios
Ejercicio 1: Temperaturas
Este script solicita el número de días y, a continuación, las temperaturas correspondientes. Calcula la temperatura media, la temperatura máxima, la temperatura mínima y el número de días con temperatura negativa.
#!/bin/bash
count=0
countBC=0
echo "Número de días"
read dias
tempTotal=0
tempMax=0
tempMin=1000
tempMedia=0
if [ $dias -ge 1 ]
then
echo "Introduce temperaturas en orden"
while [ $dias -gt $count ]
do
read temp
array[$count]=$temp
tempTotal=$(expr $tempTotal + $temp)
if [ $temp -gt $tempMax ]
then
tempMax=$temp
fi
if [ $temp -lt $tempMin ]
then
tempMin=$temp
fi
if [ $temp -lt 0 ]
then
arrayBC[$countBC]=$temp
countBC=$(expr $countBC + 1)
fi
count=$(expr $count + 1)
done
tempMedia=$(expr $tempTotal / $dias)
echo "Temp media: $tempMedia"
echo "Temp máxima: $tempMax"
echo "Temp mínima: $tempMin"
echo "Días con temperatura negativa: ${#arrayBC[@]}"
else
echo "Los días deben ser positivos"
fiEjercicio 2: Grupos de usuarios
Este script comprueba si el usuario indicado como parámetro existe, muestra su UID, su nombre, su GID, su grupo y, si pertenece a más de dos grupos, los muestra todos.
#!/bin/bash
if [ $# -lt 1 ]
then
echo "Parámetros incorrectos"
fi
id $1 > /dev/null
if [ $? -ne 0 ]
then
echo "El usuario no existe"
else
NOMBRE=$(id $1 | cut -f1 -d" ")
echo "(UID) y nombre: $NOMBRE"
GRUPO1=$(id $1 | cut -f2 -d" ")
echo "(GID) y grupo: $GRUPO1"
if [ $(id $1 | tr " " "\n" | wc -l) -gt 2 ]
then
GRUPO2=$(id $1 | cut -f3 -d" ")
echo "(GID) y grupos secundarios: $GRUPO2"
fi
fiPuntos clave
- Uso de condicionales
ifyelseen Bash. - Bucles
whilepara el procesamiento de datos. - Manejo de arrays y cálculo aritmético con
expr. - Obtención de información de usuarios con
idy procesamiento de texto concut,trywc.