La condición de bash no se cumple cuando se ejecuta mediante crontab

La condición de bash no se cumple cuando se ejecuta mediante crontab

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"

El aconnect -o fuera de la condición es para depurar.

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 se debe cumplir la condición, pero no es así:https://pastebin.com/FnxMKBkF

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

Actualizar: 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?

Respuesta1

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"

información relacionada