Problema script bash

Iniciado por hervasiop12345, 28 Mayo 2011, 17:26 PM

0 Miembros y 1 Visitante están viendo este tema.

hervasiop12345

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.

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

leogtz

Prueba esto:
Código (bash) [Seleccionar]
[ ! -z "$1" ] && directorio="$1" || directorio=$PWD
echo -e "Directorio : $directorio";
Código (perl) [Seleccionar]

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

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

hervasiop12345

gracias , me ayudó a encontrar el error. Para asignar a las variables sobraba el "$". Dejo el código terminado.

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