Não há dúvidas em sua "pergunta". Eu assumo que a pergunta é "por quê?".
Sempre que LIST for executado, lsss falhará, por isso RETRY LIST será chamado. Então (de dentro de RETRY ) LIST (como $CMD ) é executado novamente e podemos explicar desde o início.
O Bash nunca ultrapassa $CMD dentro de RETRY . Suas duas funções chamam umas às outras, elas se acumulam cada vez mais; nenhum deles realmente sai.
Eu acho que toda a sua abordagem é falha. Eu não sei qual é o propósito exato, mas "tentar um comando por um número limitado de vezes", este pode ser o seu ponto de partida:
(max=5; for n in 'seq 1 $max'; do your_command && break; done)
Um subshell é usado para manter $max fora do shell atual. Observe que o comando inteiro retorna um código de saída bastante sã.