Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: hervasiop12345 en 11 Agosto 2011, 17:32 pm



Título: [Bash] Restar caracteres a una variable
Publicado por: hervasiop12345 en 11 Agosto 2011, 17:32 pm
Hola. Acabo de terminar un script que recibe como parámetro una variable numérica entera y debe de hacer un monton del tamaño que le digamos. Ejemplo:
./monton 5
        *
      ***                    
     *****
    *******
   *********

El problema está en que quiero restarle a una variable que se llama distancia en cada iteración un caracter " " para que salga así de cuadrado. Ejecutar el script para entenderlo del todo y gracias.
Código
  1. #!/bin/bash
  2. echo $1 | grep -x -q "[0-9]\+"
  3. num=$?
  4. if [ \( $# != 1 \) ] || [ \( $num != 0 \) ]
  5. then
  6.  echo "Llama con un único argumento y que sea numérico"
  7.  exit 1
  8. fi
  9.  
  10. lineas=$1
  11. control=1
  12. char="*"
  13. pintadas=0
  14. j=1
  15. espacio=" "
  16.  
  17. while [ $j -lt $lineas ]
  18. do  
  19.  distancia=$distancia$espacio  
  20.  let j=j+1
  21. done
  22.  
  23. while [ $pintadas -lt $lineas ]
  24. do
  25.  echo -n "$distancia"       #Esta es la variable a la que quiero restarle espacios
  26.  for i in `seq 1 1 $control`
  27.  do    
  28.    echo -n "$char"
  29.  done
  30.  echo -e "\r"
  31.  let control=control+2
  32.  let pintadas=pintadas+1  
  33. done
  34.  
  35.  


Título: Re: [Bash] Restar caracteres a una variable
Publicado por: leogtz en 11 Agosto 2011, 22:47 pm
Bueno, tu sabrás cómo lo haces, yo he hecho eso en C y el código no es tan complicado, mira, así puedes quitar un carácter:

Código
  1. #!/bin/bash
  2. name="Leonardo";
  3. for((i = 0; i < ${#name}; i++))
  4. do
  5. echo -e "${name:0:-$i}";
  6. done
  7.  

${string:0:-1}