Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: hervasiop12345 en 28 Mayo 2011, 17:26 pm



Título: Problema script bash
Publicado por: hervasiop12345 en 28 Mayo 2011, 17:26 pm
Buenas. Estoy intentando hacer un script que muestre los ficheros que hay en un directorio(texto,carpetas,ficheros especiales y ejecutables). Este puede recibir o no como parámetro el directorio. El caso es que me da error en la variable a la que asigno el directorio. Os dejo el código y gracias por las molestias.
Código:
 #!/bin/bash

  if [ -z $1 ]
  then
    echo "La clasificación de ficheros del directorio $(pwd) es:"
    directorio=`pwd`
  elif [ ! -z $1 ]
  then
    echo "La clasificación de ficheros del directorio $1 es:"
    directorio=$1
  fi

  $ntext=`file $directorio/* |grep -c "text"`
  $text=`file $directorio/*| grep "text" | cut -f 1 -d ":"`
  $ndisp=`file $directorio/* |grep -c "device"`
  $disp=`file $directorio/*| grep "device" | cut -f 1 -d ":"`
  $ndire=`file $directorio/*|grep -c "directory"`
  $direc=`file $directorio/*| grep "directory" | cut -f 1 -d ":"`
  $nejec=`file $directorio/*|grep -c "executable"`
  $ejec=`file $directorio/*| grep "executable" | cut -f 1 -d ":"`
  echo "Hay $ntext fichero/s de texto: $text"
  echo "Hay $ndisp fichero/s de dispositivo: $disp"
  echo "Hay $ndire directorio/s: $direc"
  echo "Hay $nejec fichero/s ejecutables: $ejec"


Título: Re: Problema script bash
Publicado por: leogtz en 28 Mayo 2011, 20:13 pm
Prueba esto:
Código
  1. [ ! -z "$1" ] && directorio="$1" || directorio=$PWD
  2. echo -e "Directorio : $directorio";


Título: Re: Problema script bash
Publicado por: hervasiop12345 en 29 Mayo 2011, 22:23 pm
gracias , me ayudó a encontrar el error. Para asignar a las variables sobraba el "$". Dejo el código terminado.
Código:
#!/bin/bash

  if [ -z $1 ]
  then
    echo "La clasificación de ficheros del directorio $(pwd) es:"
    echo
    directorio=$(pwd)
  elif [ ! -z $1 ] && test -d "$1"
  then
    echo "La clasificación de ficheros del directorio $1 es:"
    echo
    cd $1
    directorio=$1
  else
    echo "Llamada incorrecta"
  fi

  if test -d "$directorio"
  then
    ntext=`file * |grep -c "text"`
    text=`file  * | grep "text" | cut -f 1 -d ":"` #grep -c:visualiza el número de líneas que contienen la expresión text
    ndisp=`file * |grep -c "device"`
    disp=`file  * | grep "device" | cut -f 1 -d ":"`
    ndire=`file * |grep -c "directory"`
    direc=`file * | grep "directory" | cut -f 1 -d ":"`
    nejec=`file * |grep -c "executable"`
    ejec=`file  * | grep "executable" | cut -f 1 -d ":"`
    echo "Hay $ntext fichero/s de texto:"
    echo
    echo "$text"
    echo
    echo "Hay $ndisp fichero/s de dispositivo:"
    echo
    echo "$disp"
    echo
    echo "Hay $ndire directorio/s:"
    echo
    echo "$direc"
    echo
    echo "Hay $nejec fichero/s ejecutables:"
    echo
    echo "$ejec"
  fi