Título: error sintáctico: operador aritmético inválido [BASH] Publicado por: Javilondo en 4 Mayo 2013, 02:17 am Hola amigos estoy haciendo un circuito para un reloj mecánico controlado por un Raspberry Pi con Debian.
Hay un script llamado encoders.sh que lee la posición de las manecillas del reloj a través de unos encoders conectados al GPIO, luego la escribe en dos archivos: "/var/www/vars/hora_caratula/hora" y "/var/www/vars/hora_caratula/minuto" respectivamente. Hasta ahí todo va bien, pero estoy atorado con un segundo script llamado sincro.sh, lo que se supone que tiene que hacer es interpretar los valores de los archivos antes mencionados y compararlos con la hora del sistema, de manera que se pueda calcular si la carátula del reloj tiene algún retraso o adelanto, para posteriormente sincronizar las manecillas con la hora del sistema. El valor de los archivos es hora=5 y minuto=0, así quedaron después de la última lectura de los encoders. Este es el código: Código: #! /bin/bash Código: root@raspberrypi:~# ./sincro.sh Lo extraño es que cuando introduzco valores artificiales como asignación de las dos primeras variables en vez de asignar el valor de los archivos entonces el script se ejecuta correctamente y sin errores. Aquí está el segmento que modifiqué: Código: #! /bin/bash Código: root@raspberrypi:~# ./sincro.sh No comprendo porqué el error emerge cuando cargo los valores desde los archivos, así que para descartar un error de lectura elaboré otro script llamado ajuste.sh con el siguiente código: Código: #! /bin/bash Código: #! /bin/bash Código: root@raspberrypi:~# ./ajuste.sh La modificación fue comentar las asignaciones de los archivos y sustituirlos con valores artificiales '5' y '0'. He aquí el código: Código: #! /bin/bash Código: root@raspberrypi:~# ./ajuste.sh Como pueden ver, aparece un patrón, este es que cuando asigno los valores desde los archivos ya sea desde el script original através de parámetros aparece el "error de sintaxis" y cuando asigno valores artificiales ya sea en el script original como atraves de parámetros, la salida está libre de errores. Notarán que para los valores de asignación usé siempre los mismos valores que contenían los archivos desde la última lectura de los encoders ('5' y '0'), esto lo hice para evitar un sesgo, o sea que el código trate siempre con los mismos valores y solo cambie la situación del flujo de código de la "hora de la carátula". También se podrán dar cuenta que los valores de la "hora del sistema" han ido cambiando en cada ejecución, esto es natural, puesto que estos valores realmente son extraídos de la hora del sistema que está en avance constante, pero a pesar de eso nunca presentó anomalías, quiere decir que el problema está en la sección de asignación de valores de la "hora de la carátula" y sólo cuando dicha asignación era procedente de la lectura de los archivos. Dudo que sea un problema de lectura porque estoy como root, además sistema de ficheros no está corrupto. Cuando las pruebas fueron efectuadas los permisos de dichos archivos estaban en 755, posteriormente los cambié a 777 y repetí las pruebas pero todo sigue igual. Para descartar definitivamente errores de lectura escribí otro script llamado valores.sh que simplemente muestra el contenido de los archivos: Código: #! /bin/bash Código: root@raspberrypi:~# ./valores.sh Tal vez el problema no es tan grande, tal vez sea un error obvio de novato que está justo frente a mi, pero no logro verlo. Si alguien encuentra el dichoso error de sintaxis agradecería que lo compartiera, es posible que yo no sea el único que pase por esto. Saludos |