Duda script de BASH

Kartalon

A ver, he hecho este script de bash que debería sumar todos los argumentos, pero no consigo que de el valor correcto.

let x=$1+$2
shift 2
c=2
while [ $c -le $# ]
do
let x=$x+$1
shift 1
let c=$c+1
done
echo "La suma de todos los argumentos es $x"

Si alguien fuera tan amable de decirme dónde está el error se lo agradecería :)

Salu2

Edit: Tras mucho pensar creo que el error viene de que, obviamente, el valor de $# cambia con cada shift en el bucle, de todas maneras sigue saliéndome erróneo, veré que puedo hacer :

c=0
x=0
n=$#
while
     [ $c -le $n ]
do
     let x=$x+$1
     shift 1
     let c=$c+1
done
echo "La suma de los $c argumentos es $x"

Kartalon

Wiii, ya me salió de una forma totalmente diferente, pero bueno :)

x=0
while
       [ $# != 0 ]
do
       let x=$x+$1
       shift 1
done
echo "La suma de todos los argumentos es $x"

Postearé más dudas que tenga de shell scripting en este mismo hilo para no sentirme tan culpable por haber creado un hilo tan inútil xD

Salu2

guner

#3 XD.

¿Es bourne shell?

A mí es que no me gusta la sintaxis : (. Si lo hubieras puesto en soft libre puede que te hubieran ayudado mejor, aunque muchos de los que pasan por allí, también lo hacen por aquí...

Sandevil

En bash no hace falta que declares las variables.

Ese x=0 lo puedes ahorrar :P

Editado: Hace bastante que no lo toco, asi que lo he tenido que comprobar xDD Y sip es lo que decia

Kartalon

#5 Pues no se pero una vez lo ejecuté y como no había puesto x=0 la variable se inició con un valor que estaría almacenado antes o no se, pero no era 0

Salu2

Y

mmmm, toma, este es más rápido y eficaz

#!/bin/bash
AUX=$(echo $* | wc -w)
echo $AUX

Y para que las variables no estén posiblemente iniciadas con algún valor anterior, inicializa siempre tus scripts con #!/bin/bash

Usuarios habituales