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
#!/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
Ese if no es correcto en Bash. Si quieres comparar números una forma de hacerlo es:
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à ;)
Ó agrega un par de parentesis a:
if ( $size <= $2 )
Para que quede:
if (( $size <= $2 ))