Foro de elhacker.net

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
  1. #!/bin/bash
  2. if test $# -lt 2
  3. then
  4. echo "Ús prac2_4.sh <ruta home usuaris> <Mb llindar>"
  5. exit 0
  6. fi
  7. cd $1
  8. pwd
  9. for directori in *
  10. do
  11. echo "$1, $2, $directori"
  12. if [ -r $directori ]
  13. then
  14. echo "$dierctori"
  15. echo "Analitzant home de $directori"
  16. size=$( du -ms -x $1/$directori | cut -f1 )
  17. if ( $size <= $2 )
  18. then
  19. echo "L'usuari $directori NO exedeix la quota de $2, té $size"
  20. else
  21. echo "L'usuari $directori exedeix la quota de $2, té $size"
  22. fi
  23. else
  24. echo "No puc llegir $1/$directori"
  25. fi
  26. done
  27.  
  28. 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
  1. 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
  1. if ( $size <= $2 )

Para que quede:
Código
  1. if (( $size <= $2 ))