Test Foro de elhacker.net SMF 2.1

Programación => Scripting => Mensaje iniciado por: kaskull en 8 Enero 2014, 12:36 PM

Título: [BASH] Ayuda urgente con codigo
Publicado por: kaskull en 8 Enero 2014, 12:36 PM
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


Título: Re: [BASH] Ayuda urgente con codigo
Publicado por: blipi en 8 Enero 2014, 17:11 PM
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à ;)
Título: Re: [BASH] Ayuda urgente con codigo
Publicado por: -Myx- en 8 Enero 2014, 17:48 PM
Ó agrega un par de parentesis a:
Código (bash) [Seleccionar]
if ( $size <= $2 )

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