Como você reutiliza um script em outro?

2

É correto que haja duas maneiras de reutilizar um script A em outro script B:

Eu queria saber quando usar o caminho?

Mesmo nos casos em que ambos podem trabalhar, qual deles é preferível sobre quais razões?

Obrigado.

    
por Tim 18.10.2018 / 14:05

1 resposta

3

Ambas as formas são válidas, mas muito diferentes.

Usando o script A no script B (chamando-o como um comando), você deixa a possibilidade de usar o script A separadamente para fazer o que o script A está fazendo sem o script B.

Ao mover as partes operacionais do script A para funções, você o transforma em uma espécie de biblioteca. O Script A, então, não faz nada por si só, além de definir um número de funções, e outro script teria que obtê-lo e usar as funções em si.

Ambas as abordagens são perfeitamente válidas, e nenhuma delas é muito incomum. Qual deles usar totalmente depende do que o script A está fazendo originalmente, se ele precisa continuar fazendo isso (caso em que transformá-lo em uma biblioteca não seria possível 1 ) e se mais scripts do que o script B pode se beneficiar das funções que o script A-as-a-library forneceria.

Uma terceira possibilidade seria obviamente colocar todos os bits comuns do script A e B em funções em um script C, que então funcionaria como uma biblioteca de funções que os outros dois usam. primeiro, comprando isso. No caso extremo, isso pode deixar um ou ambos de A e B quase vazios, além de possivelmente alguma análise de linha de comando e outras tarefas administrativas, como organizar com arquivos de entrada e saída, etc.

1 É claro que é possível ter uma biblioteca de código de shell que você também pode executar. Veja por exemplo Diferenciando entre a execução e a origem de um script de shell bash?

A questão que tenho com isso é que não é elegante (opinião pessoal). Outras variações são encontradas em esta resposta do StackOverflow que se baseia em detectar o tipo de shell sendo usado e fazer as coisas de maneira diferente para cada um.

O problema que tenho com uma biblioteca-como-script (além de depender de um código bagunçado para detectar como ela está sendo usada) é que ela se torna uma estranha coisa híbrida que fornece duas coisas totalmente separadas funcionalidades dependendo de como você o chama. Ele define funções que outro script pode escolher ao escolher quando originado, mas se comporta como um comando quando usado como um comando. Seria estranho escrever o manual para ele (em que seção manual deveria ser categorizado?) ...

Eu preferiria (e esta ainda é minha opinião pessoal) separar os bits da biblioteca em um arquivo de biblioteca de shell puro e fornecer isso de qualquer script que possa ser chamado pelo usuário e que precise usá-lo. Isso seguiria o mesmo design que você também encontraria em bibliotecas compartilhadas versus binários executáveis.

    
por 18.10.2018 / 14:29