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"
Prueba esto:
[ ! -z "$1" ] && directorio="$1" || directorio=$PWD
echo -e "Directorio : $directorio";
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