Preciso acessar algumas variáveis internas do bash (BASH_LINENO, BASH_SOURCE) a partir de um comando chamado por um script de shell. A única interface possível entre meu comando e o script são variáveis de ambiente. Existe alguma maneira de configurar o bash para tornar globais algumas variáveis internas:
Exemplo:
myscript.sh
#!/bin/bash
# ... some scripting stuff ...
mycommand # LINENO=4, BASH_SOURCE=([0]="myscript.sh")
# ... some other scripting stuff ...
Então, o que eu preciso é que quando o bash invoque meu comando; $ LINENO e $ BASH_SOURCE (variáveis internas) tornam-se globais, para que meu comando acesse.
Não estou procurando comandos como:
declare -x LINENO
Como a LINENO
mudança ao longo do tempo, se eu fizer isso, declare -x LINENO
a nova variável global LINENO
assume o valor de LINENO
(interno) neste momento. Eu preciso que isso seja dinâmico, para que o global LINENO
reflita o LINENO
valor de cada mudança.
Em palavras de programação: desejo alterar o escopo dessas variáveis de interno para global ou criar algo como um ponteiro.
fonte
mycommand
aceitar os argumentos da linha de comando como emmycommand "$LINENO" "${BASH_SOURCE[0]}"
?mycommand
e o shell deve ser variáveis de ambiente.mycommand
com uma linha comoline=$LINENO src="$BASH_SOURCE[0]}" mycommand
e depoismycommand
inspecionar a variávelline
esrc
?