En primer lugar, analiza tus scripts on bash -n o ksh -n, y te dirán los errores que contienen, si los hay. Luego, cuando los ejecutes, hazlo con "bash -x" o "ksh -x", y verás paso a paso lo que hace el script.
Otros servicios que te pueden ayudar son explainshell.com y shellcheck.com, pruébalos.
En principio no parece haber errores de sintaxis, solamente de estilo:
Código:
$ ksh -n test.sh
test.sh: warning: line 6: `...` obsolete, use $(...)
test.sh: warning: line 6: `...` obsolete, use $(...)
test.sh: warning: line 7: `...` obsolete, use $(...)
test.sh: warning: line 7: `...` obsolete, use $(...)
Eso nos recomienda usar $() en vez de las comillas invertidas.
Sigo viendo y encuentro la línea 4, "$err == 0". Ten en cuenta que allí estás comparando cadenas y no enteros, para comparar enteros usa
o la forma
Más allá de estos comentarios, tus errores son de estilo y de lógica.
Tu script intenta ejecutar un programa java y reiniciar mysql hasta que el programa java finalize con éxito. Esto está mal a varios niveles.
1. ¿Es necesario reiniciar mysql todas las veces? De hecho, ¿es necesario de veras independientemente de cómo funcione el programa java?
2. Si el programa falla, ¿no deberías ver por qué en vez de reiniciarlo todas las veces esperando que en alguna finalice bien?
3. ¿cuánto demora el programa java? porque el script continuará solamente cuando finalice, no inmediatamente después de ejecutarlo.
4. ¿dónde está definida la variable success de la última línea? si no está definida te dará un error, y además ¿por qué retornas con el valor contrario de success? (1 si success es 0, 0 si success es 1)
Mis recomendaciones:
1. corre tu script con el modificador "-x" para ver paso a paso lo que sucede.
2. Si el programa java no finaliza inmediatamente, es lógico que quede "colgado". Quizás esa sea la intención, para re-levantarlo si se cae por cualquier motivo, pero si ese es el objetivo del script no esperes retornar a la línea de comandos, te irá mejor llamándolo desde cron.
Saludos.