Eu tenho o seguinte script de teste:
# test.bash
#----------
{
set -v # Echoes the following 3 parameters
DELAY_MS=2000
SCALING=false
VERBOSE=false
set +v
echo TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST
} 2>&1 | tee test.bash.out
Ele define 3 variáveis e ecoa uma TEST
linha de saída. Por causa disso set -v
, espero que as configurações de três variáveis sejam espelhadas para stdout e tee
'd para test.bash.out
. No entanto, eles não aparecem nem no console Bash nem no test.bash.out
.
Por que eles não apareceriam?
Existe uma maneira simples de exibir as variáveis em stdout ?
set -v
(abreviação deset -o verbose
) imprime as linhas de origem à medida que são lidas e, antes que o shell possa executar qualquer coisa entre chaves, ele precisa ler tudo para descobrir se há um redirecionamento ou canal ou&
, etc. no final. (E para verificar se há correspondência}
em algum lugar, embora você possa argumentar que isso não é exatamente necessário.)Se você quiser ver o que o shell executa , use
set -x
(ouset -o xtrace
).