elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  [Bash]Tratar variable vacía case [Resuelto]
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Bash]Tratar variable vacía case [Resuelto]  (Leído 6,324 veces)
hervasiop12345

Desconectado Desconectado

Mensajes: 36


Ver Perfil
[Bash]Tratar variable vacía case [Resuelto]
« 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.

Código
  1. #!/bin/bash
  2.  
  3. function opciones {
  4.  
  5.  ca="-p"
  6.  ca2="-u"
  7.  ca3="-help"
  8.  
  9.  if [ \( $1 == $ca \) -o \( $1 == $ca2 \) -o \( $1 == $ca3 \) -o \( -z $1 \) ]
  10.  then
  11.    case "$1" in
  12.  
  13.      -p) echo "Opción -p"
  14.         ;;
  15.      -u) echo "Opción -u"
  16.         ;;
  17.      -help) echo "Opción -help"
  18.            ;;
  19.      "") echo "Mostrar todo"
  20.            ;;        
  21.    esac
  22.  else
  23.    echo "Opción Inválida"
  24.  fi
  25. }
  26.  
  27. if [ `cat /etc/passwd |grep $1 |wc -l` -ge 1 ]
  28. then
  29.  read option
  30.  opciones $option
  31. else
  32.  echo "Usuario inexistente"
  33.  exit 2
  34. fi
  35.  


« Última modificación: 8 Julio 2011, 17:45 pm por Leo Gutiérrez. » En línea

leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: Tratar variable vacía case
« Respuesta #1 en: 7 Julio 2011, 08:21 am »

Puedes forzar la entrada así:

Código
  1. #!/bin/bash
  2.  
  3. read opcion
  4. until [ $opcion ]
  5. do
  6. read opcion
  7. done
  8.  


En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
hervasiop12345

Desconectado Desconectado

Mensajes: 36


Ver Perfil
Re: Tratar variable vacía case
« Respuesta #2 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:

Código:
#!/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



« Última modificación: 8 Julio 2011, 14:27 pm por hervasiop12345 » En línea

leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: Tratar variable vacía case
« Respuesta #3 en: 8 Julio 2011, 17:41 pm »

¿Entonces?, ¿así lo dejas o cuál problema hay?
En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
hervasiop12345

Desconectado Desconectado

Mensajes: 36


Ver Perfil
Re: Tratar variable vacía case
« Respuesta #4 en: 8 Julio 2011, 17:45 pm »

así lo dejo
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Evaluar Variable cuando esta vacia
Java
^Tifa^ 8 11,084 Último mensaje 4 Diciembre 2008, 19:57 pm
por ^Tifa^
[Bash] Problema con array [resuelto]
Scripting
hervasiop12345 8 8,426 Último mensaje 21 Julio 2011, 10:15 am
por hervasiop12345
Saber si la variable Post esta vacia en Java Script
Desarrollo Web
Lupin 3 4,861 Último mensaje 30 Abril 2013, 02:35 am
por engel lex
tipo de variable para tratar ficheros grandes
Programación C/C++
Jano4 5 2,602 Último mensaje 20 Enero 2015, 22:08 pm
por Jano4
Como hacer una variable tipo string a lower-case en c++?
Programación C/C++
UsuarioProgramador 4 3,329 Último mensaje 30 Julio 2017, 00:26 am
por UsuarioProgramador
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines