elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
29 Mayo 2012, 06:52  


Tema destacado:


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting (Moderadores: Novlucker, Leo Gutiérrez., EleKtro H@cker)
| | |-+  [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 1,448 veces)
hervasiop12345

Desconectado Desconectado

Mensajes: 33


Ver Perfil
[Bash]Tratar variable vacía case [Resuelto]
« en: 6 Julio 2011, 11:01 »

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
#!/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
 


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

Mensajes: 2.968


/^$/


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

Puedes forzar la entrada así:

Código
#!/bin/bash
 
read opcion
until [ $opcion ]
do
read opcion
done
 


En línea

Código
(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}
 

leorocko13@hotmail.com
https://github.com/leogtzr/
hervasiop12345

Desconectado Desconectado

Mensajes: 33


Ver Perfil
Re: Tratar variable vacía case
« Respuesta #2 en: 8 Julio 2011, 14:25 »

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 por hervasiop12345 » En línea
Leo Gutiérrez.
. . .. ... ..... ........ ............. .....................
Moderador
***
Desconectado Desconectado

Mensajes: 2.968


/^$/


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

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

Código
(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}
 

leorocko13@hotmail.com
https://github.com/leogtzr/
hervasiop12345

Desconectado Desconectado

Mensajes: 33


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

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 1,889 Último mensaje 4 Diciembre 2008, 19:57
por ^Tifa^
[BASH]Simplemente guardar string en una variable
Scripting
illera88 11 2,506 Último mensaje 3 Enero 2011, 06:33
por Leo Gutiérrez.
Crear variable en bash
Scripting
.:UND3R:. 12 1,868 Último mensaje 14 Abril 2011, 12:44
por D4RIO
[Bash] Problema con array [resuelto]
Scripting
hervasiop12345 8 1,532 Último mensaje 21 Julio 2011, 10:15
por hervasiop12345
Colores bash en python (RESUELTO)
Scripting
carlos.foroelhaker 2 126 Último mensaje 4 Mayo 2012, 19:41
por carlos.foroelhaker
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines