La condición de Bash no se cumple cuando crontab la ejecuta

1

Tengo un pequeño script para iniciar un servidor fluidsynth y luego conectarlo a mi dispositivo midi en mi rasberry (el sistema operativo es raspbian stretch lite).

echo  "Starting"
fluidsynth -is -a alsa --gain 3 /usr/share/sounds/sf2/Nice-Keys-B-Plus-JN1.4.sf2 &
echo "Fluidsynth started"
while true; do aconnect -o; if [[ $(aconnect -o ) = *FLUID* ]]; then break; fi; sleep 2; done
aconnect 20:0 128:0
echo "Connected"

La conexión -o fuera de la condición es para la depuración.

Cuando ejecuté normalmente (./startup_fluid_synth.sh) funciona bien: https://pastebin.com/kU0wDu3w

Mi crontab -e dice:

@reboot /home/pi/startup_fluid_synth.sh >> /home/pi/fluid.log

Ahora, cuando reinicio el pi, los scripts se inician, pero el registro muestra claramente que la condición debe cumplirse, pero no lo es: https://pastebin.com/FnxMKBkF

¿Alguna idea de por qué esto podría ser?

Actualización: el registro de errores muestra:

/home/pi/startup_fluid_synth.sh: 4: /home/pi/startup_fluid_synth.sh: [[: not found

¿Es posible que cron no conozca el comando [[]] de alguna manera?

Julian
fuente
Utilice la ruta completa a aconnect(y cualquier otro comando externo).
choroba
Ya probé eso, ¿cómo resultaría eso en una condición que no se cumple, cuando el comando se ejecuta claramente normalmente?
Julian
Parece que el fluidsynthcomando no ha comenzado. ¿Puedes verificar también la salida de error del script?
choroba
Si observa la línea 119 de la segunda pastebin verá que comienza el sintetizador de fluidos, agregaré la salida de error y la publicaré arriba.
Julian

Respuestas:

0

Agregar #! / Bin / bash al archivo .sh resolvió el problema.

#!/bin/bash
echo  "Starting"
/usr/bin/fluidsynth -is -a alsa --gain 3 /usr/share/sounds/sf2/Nice-Keys-B-Plus-JN1.4.sf2 &
echo "Fluidsynth started"
while true; do /usr/bin/aconnect -o; if [[ $(/usr/bin/aconnect -o ) = *FLUID* ]]; then break; fi; sleep 2; done
/usr/bin/aconnect 20:0 128:0
echo "Connected"
Julian
fuente