Colocando tudo junto aqui, acho que esse código funcionará para você:
export CATALINA_HOME=/tomcat/directory
function tomcat {
if [ "$1" = "-s" ]; then
sh $CATALINA_HOME/bin/startup.sh
elif [ "$1" = "-x" ]; then
sh $CATALINA_HOME/bin/shutdown.sh
else
echo "Enter '-s' to start Tomcat, '-x' to shutdown."
fi
}
Alterações importantes da sua versão:
- Removidos backquotes dos comandos de inicialização e desligamento
- Cercou a variável
$1entre aspas duplas
Algumas notas sobre sintaxe e segurança do bash:
-
function tomcat {é equivalente atomcat() { - Como aponta @ooshro, é necessário um espaço após o
[apósif- em caso de dúvida, expanda - nas comparações, você deve preferir
=over==, já que single-equals é o padrão que outras shells utilizam - sempre envolvem variáveis (como
$1) entre aspas duplas, especialmente nas instruções de comparação, ou em qualquer lugar onde deixá-las fora causaria um problema - @ a sintaxe
casedo ooshro é uma maneira mais concisa de lidar com esse problema, mas pode ser menos flexível se você planeja tornar seu código mais complicado no futuro - backquotes capturam a saída de um comando e o substituem no script, portanto, se você envolver uma linha inteira com backquotes, o bash executará essa linha e tentará executar a saída, o que raramente é o que você provavelmente deseja
- Você não precisa recuar a funcionalidade desse script, mas, quando fizer isso, sugiro usar a sintaxe
$(...), pois ela é encaixável e, na minha opinião, é muito mais fácil de ler e entender