Primeiro, pense em alterar a extensão para .sh . Deve ser capaz de executar como ./FTL.sh .
Em segundo lugar, se estiver faltando o #!/bin/sh no topo do arquivo, também não funcionará.
Em terceiro lugar, se você tiver comandos sudo misturados com comandos que não exigem sudo , você pode echo <sudo_password> | command .
Nesse caso, a melhor prática (de uma perspectiva de automação / QA) é executar seu comando como ./FTL.sh <sudo_password> e capturar a senha a ser usada posteriormente no script para cada comando que solicitará a senha sudo.
ex:
#!/bin/sh
PW=$1 #sets first parameter
...
# non-sudo commands
...
echo $PW | command'
Também não é uma má idéia lançar um yes | quando seu comando perguntar se você deseja continuar por qualquer motivo. Então você pode modificar o acima para echo $PW | yes | command
Eu também geralmente captura todas as saídas durante o teste, o que pode ser feito anexando |& tee path/to/logfile.log ao final de qualquer comando, se você quiser assisti-lo no console, ou alternar o |& tee para &> se tem um longo período de tempo ou não quer monitorar o progresso.
ex:
if echo $PW | yes | command |& tee path/to/logfile.log; then
if sed -Fq "Validation Passed" path/to/logfile.log; then
echo "PASS: returned 'Validation Pass'"
else echo "FAIL: test did not return 'Validation Pass'"
fi
else echo "Test Failed"
fi
Apenas uma rápida no comando sed, -F permite que você especifique o nome do arquivo (em vez de pesquisar uma saída do processo) e -q é executado silenciosamente e sai depois de concluir a pesquisa no arquivo / processo. Consulte a documentação do sed para obter mais informações.