[BASH] Ayuda urgente con codigo

Iniciado por kaskull, 8 Enero 2014, 12:36 PM

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

kaskull

Hola muy buenas,
Este codigo es para un trabajo: El usuario entra dos parametros, la ruta donde se encuentran los usuarios y el tamaño máximo.
Tengo que comprobar si tengo acceso a la carpeta y si supera el tamaño máximo, pero al comparar con el IF me da error.
Error:
http://puu.sh/6dFs6

Código (bash) [Seleccionar]

#!/bin/bash
if test $# -lt 2
then
echo "Ús prac2_4.sh <ruta home usuaris> <Mb llindar>"
exit 0
fi
cd $1
pwd
for directori in *
do
echo "$1, $2, $directori"
if [ -r $directori ]
then
echo "$dierctori"
echo "Analitzant home de $directori"
size=$( du -ms -x $1/$directori | cut -f1 )
if ( $size <= $2 )
then
echo "L'usuari $directori NO exedeix la quota de $2, té $size"
else
echo "L'usuari $directori exedeix la quota de $2, té $size"
fi
else
echo "No puc llegir $1/$directori"
fi
done

exit 0



blipi

Ese if no es correcto en Bash. Si quieres comparar números una forma de hacerlo es:
Código (bash) [Seleccionar]
if [ "$size" -le "$2" ]

-le significa "less equal", es decir, menor igual. Otros son, lt (less than <), gt (greater than >), ge (greater equal >=)

Suerte!

PD: Veig que també ets català ;)

-Myx-

Ó agrega un par de parentesis a:
Código (bash) [Seleccionar]
if ( $size <= $2 )

Para que quede:
Código (bash) [Seleccionar]
if (( $size <= $2 ))