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
$1
entre 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
case
do 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