Título: [Bash]Tratar variable vacía case [Resuelto]
Publicado por: hervasiop12345 en 6 Julio 2011, 11:01 am
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
Título: Re: Tratar variable vacía case
Publicado por: leogtz en 7 Julio 2011, 08:21 am
Puedes forzar la entrada así: #!/bin/bash read opcion until [ $opcion ] do read opcion done
Título: Re: Tratar variable vacía case
Publicado por: hervasiop12345 en 8 Julio 2011, 14:25 pm
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
Título: Re: Tratar variable vacía case
Publicado por: leogtz en 8 Julio 2011, 17:41 pm
¿Entonces?, ¿así lo dejas o cuál problema hay?
Título: Re: Tratar variable vacía case
Publicado por: hervasiop12345 en 8 Julio 2011, 17:45 pm
así lo dejo
|