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"