Muchas gracias por los comentarios y las opciones propuestas.
Comento ahora porque me está pasando una cosa
absolutamente fantasmagórica con mi script. (Y no exagero, me he roto la cabeza durante horas y no entiendo qué coj... está pasando).
Aviso que esto es para valientes
![Grin ;D](https://foro.seguridadwireless.net/Smileys/nostalgia/grin.gif)
El misterio es que mi script, en teoría (y en la práctica), aún siendo menos eficiente que los vuestros.... funciona perfectamente:
Enciende y apaga cada relé independientemente de los demás.
Sin embargo.... hay algún caso particular, según el orden de encendido que hace que el comando cut falle:
Me explico breve y directamente:
ESTADOBIN=1010
Si a eso le aplico un cut -c 2-4 debería devolverme 010, verdad?
Pues me devuelve 8
![Huh ???](https://foro.seguridadwireless.net/Smileys/nostalgia/huh.gif)
WTF.
Le he puesto un par de echos en el script, antes del comando cut, para asegurarme de que el contenido de la variable es exactamente correcto.
Y LO ES.
Este es el trozo FANTASMA (fallo totalmente inexplicable, sucesos paranormales) del script:
echo "ESTADOBIN en 4 es $ESTADOBIN"
newState_BRUTO_der=$(($(echo $ESTADOBIN | cut -c 2-4)))
newState_BRUTO_der_OK=$(printf "%03d" $newState_BRUTO_der)
echo "_____________"
echo "newState_BRUTO_der $newState_BRUTO_der (cut 2-4)"
echo "newState_BRUTO_der_OK $newState_BRUTO_der_OK printf %03d"
echo "_____________"
Y esta es la salida:
ESTADOBIN en 4 es 1010
_____________
newState_BRUTO_der 8 (cut 2-4)
newState_BRUTO_der_OK 008 printf %03d
_____________
Me joden muchísimo estas cosas, porque deja mi razonamiento y mi lógica por los suelos. Es como si un duendecillo se estuviera cachondeando de mí.
Si algún valiente e intrépido detective no le tiene miedo a los expedientes X y se atreve a enfrentarse a lo desconocido.... que me avise. Lo invitaré a una cerveza con mucho gusto.
El caso es que el relé número 4 se enciende y apaga perfectamente, de forma independiente. Es cuando hago cierta secuencia de encendido y apagado de otros relés cuando se produce el inexplicable fallo del cut. Esta es la secuencia que produce fallo:
./rele.sh 1 on (OK, perfecto)
./rele.sh 2 on (OK, perfecto)
./rele.sh 3 on (OK, perfecto)
./rele.sh 2 off (OK, perfecto)
./rele.sh 4 on SUCESO PARANORMAL. cut debe devolver 010, en cambio, me devuelve 8
![Tongue :P](https://foro.seguridadwireless.net/Smileys/nostalgia/nn.gif)
Totalmente inexplicable.