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.