Veja uma amostra de como lidar com esse cenário em um script, sem perder a funcionalidade que o OP deseja, que é:
-
capacidade de executar vários blocos de lógica, todos eles, de uma só vez ou um de cada vez.
-
Capacidade de registrar essas ações em um arquivo.
Este é um exemplo simples. Se você tratar a linguagem de script como faria com qualquer outra linguagem, e escrever código organizado, de repente você pode fazer todo tipo de coisas com ela. O truque é não deixar blocos de lógica solta fora das funções, assim você pode trocar as coisas facilmente, usar uma peça, não a outra, depurar seções, adicionar uma função de registro, que é o que eu faria normalmente, error_handler ( ), e assim por diante. Com quase nenhum trabalho extra, ou seja, você acaba com um aplicativo simples, mas limpo e fácil de manter, e não um monte de linhas de ações aleatórias empilhadas umas sobre as outras.
arquivo: my_stuff
#!/usr/bin/env bash
logfile='logfile.log'
function main() {
case "$1" in
run-all)
block_1
block_2
;;
run-1)
block_1
;;
run-2)
block_2
;;
*)
echo 'No start option provided. Exiting'
exit 1
;;
esac
}
function block_1(){
do_something
if [ "$?" == 0 ]; then
do_something_else
echo "Deleting file 299" >> $logfile
echo "Deleting file 300" >> $logfile
echo "wrapper ran successfully on 01/01/18 00:01:00 GMT" >> $logfile
else
exit "$?"
fi
}
function block_2(){
do_something
if [ "$?" == 0 ]; then
do_something_else
echo "Deleting file 299" >> $logfile
echo "Deleting file 300" >> $logfile
echo "wrapper ran successfully on 01/01/18 00:01:00 GMT" >> $logfile
else
exit "$?"
fi
}
# $@ is the list of start arguments, which main will use
# with $1, $2, and so on.
main $@
Você executaria isso assim:
./my_stuff 'run-all'
Este é apenas um exemplo, mas na verdade tudo o que você faz é organizar a lógica, organizá-la da maneira que faria com qualquer idioma e depois acionar as ações desejadas. Eu acho que se eu iniciar scripts de shell assumindo que eles serão usados e mantidos, e se eu os escrever usando funções, eles serão tão flexíveis e fáceis de manter quanto qualquer outra programação que eu faça.