Como executar sh a partir do arquivo sh

Desenvolvi um aplicativo Java. Dividi o aplicativo em 5 subaplicativos e criei um wrapper de serviço para cada subaplicativo usando scripts de shell:

subaap1/bin/app.sh subaap2/bin/app.sh ... 

Agora, quero criar um script de inicialização startup.sh para executar todos os scripts de wrapper:

#!/bin/bash sh subaap1/bin/app.sh start sh subaap2/bin/app.sh start ... 

Mas quando o executo, obtenho:

Comando inesperado: start

Como posso corrigir isso?

Comentários

  • Pelo que eu posso dizer, esse erro está vindo de seu aplicativo. Que comando você digita para apenas executar subaap1?

Resposta

Você não deveria precisar usar sh em seu script para executar seus subaplicativos.

Basta usar:

#!/bin/bash subaap1/bin/app.sh start subaap2/bin/app.sh start ... 

Atualizado de acordo com os comentários abaixo:

sua versão deve funcionar, mas você precisa saber qual shell sh está chamando. Pode ser que você tenha o shell errado ou as permissões em seus aplicativos estão incorretas para o shell que você está tentando usar.

Comentários

  • Tem certeza? bash irá passar os argumentos para o script que você ' em execução (isso ' é o que meu sh está vinculado ao símbolo); Eu não ' conheço outros shells
  • @Michael – ele os passará se você usar sh? Você pode estar certo – eu simplesmente não ' não faço assim. Sempre coloco as minhas entre aspas, se quiser. Ou, como aqui, apenas t remova sh e bash fica feliz em assumir que a linha é um aplicativo.
  • Eu tentei executar subaap1/bin/app.sh start na linha de comando e funciona perfeitamente. Agora mudo o script de shell sem sh, mas obtive startup.sh: line 2: subaap1/bin/app.sh: Permission denied. Alguma sugestão, senhor?
  • Sim, tentei sh /path/to/shell/script arg e o argumento passou. Pode depender de qual shell sh está realmente vinculado, embora
  • @Michael – bom ponto! sh poderia ir para outro lugar que não bash.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *