Eu tenho um script (vamos chamá-lo scriptC
) que usa getopt
para analisar opções curtas e longas e funciona bem.
Este script está sendo chamado assim:
scriptA
executa scriptB
quais chamadas scriptC
com os parâmetros apropriados.
Pergunta: É possível passar os mesmos parâmetros como argumentos para scriptA
e depois esses serem passados eventualmente para scriptC
?
Os scripts são chamados como:
scriptB "$@"
e scriptB
eventualmente fazscriptC —param1 —param2
Se
scriptA
chamascriptB
comoentão os argumentos de linha de comando que foram usados para invocar
scriptA
serão passadosscriptB
desde que não tenham sido alterados antes da chamada.Da mesma forma para a chamada de
scriptB
parascriptC
.Contanto que
scriptA
escriptB
não tente interpretar, alterar ou de outra forma modificar o conteúdo de$@
(ou os parâmetros posicionais individuais$1
,$2
,$3
etc.), os argumentos da linha de comando serão passadosscriptC
para que sejam analisados comgetopt
.Exemplo usando funções ao invés de scripts (funciona da mesma forma):
Isso produzirá a saída
Fazendo a chamada como
vai produzir
Ou seja, os parâmetros serão repassados
scriptC
sem modificação. Resta entãoscriptC
interpretar os parâmetros usandogetopt
,getopts
ou por algum outro meio.