Hola. Me gustaría que cuando haga read y pulse enter sin introducir nada , en case muestre una serie de cosas pero me da eror en la línea del if y es por esto. Pensé en usar \( -z $1 \) pero no parece funcionar. Espero vuestra respuesta y gracias.
#!/bin/bash
function opciones {
ca="-p"
ca2="-u"
ca3="-help"
if [ \( $1 == $ca \) -o \( $1 == $ca2 \) -o \( $1 == $ca3 \) -o \( -z $1 \) ]
then
case "$1" in
-p) echo "Opción -p"
;;
-u) echo "Opción -u"
;;
-help) echo "Opción -help"
;;
"") echo "Mostrar todo"
;;
esac
else
echo "Opción Inválida"
fi
}
if [ `cat /etc/passwd |grep $1 |wc -l` -ge 1 ]
then
read option
opciones $option
else
echo "Usuario inexistente"
exit 2
fi
Puedes forzar la entrada así:
#!/bin/bash
read opcion
until [ $opcion ]
do
read opcion
done
Gracias por tu respuesta. Tal y como yo lo quería hacer no me sirve el bucle ya que ahí fuerzo a que se introduzca algo. Este script muestra informacíon acerca de un usuario si existe.
Script terminado:
#!/bin/bash
function nfo {
echo "Login: $log"
echo "Nombre: `cat /etc/passwd | cut -d , -f 1 |grep $log | cut -d : -f 5`"
echo "Directorio home: `cat /etc/passwd | grep $log | cut -d : -f 6`"
echo "Shell: `cat /etc/passwd | grep $log | cut -d : -f 7`"
if [ `finger $log | grep On | wc -l` -ge 1 ]
then
echo "Conectado: Si"
else
echo "Conectado: No"
fi
}
function procesos {
echo -e "PID PROCESO\n"
echo "`ps aux | tr -s " " | grep $log | cut -d " " -f 1,2,11 | grep $log | cut -d " " -f 2,3`"
}
function opciones {
ca="-p"
ca2="-u"
ca3="-help"
if [ ! $option ]
then
nfo $log
procesos $log
exit 0
elif [ \( $option == $ca \) -o \( $option == $ca2 \) -o \( $option == $ca3 \) ]
then
case "$option" in
-p)
procesos $log
exit 0
;;
-u)
nfo $log
exit 0
;;
-help)
echo -e "Usa -u para obtener información del usuario\n -p para información de los procesos\n o nada para mostrar ambas cosas"
;;
esac
else
echo "Opción Inválida"
exit 1
fi
}
if [ -z $1 ]
then
echo "Haz la llamada con algún usuario"
exit 2
elif [ `cat /etc/passwd |grep $1 |wc -l` -ge 1 ]
then
log=$1
read option
opciones
else
echo "Usuario inexistente"
exit 2
fi
¿Entonces?, ¿así lo dejas o cuál problema hay?
así lo dejo