variável de ambiente dentro variável
-
19-08-2019 - |
Pergunta
Eu tenho uma variável de ambiente chamada $TEST
que se refere a um diretório
no meu script bash Eu tenho uma variável chamada $VARTEST
que é $TEST/dir/file
Agora eu quero grep o arquivo especificado pelo $VARTEST
assim que eu tento fazer:
não grep somestring $VARTEST
mas não traduzir $TEST
para ele do diretório
Eu tentei diferentes combinações de {}
, ""
e ''
mas sem sucesso
Solução
Eu acho que você quer
eval grep somestring "$VARTEST"
ou mesmo
VARTEST_EVALUATED=$(eval echo $VARTEST)
grep "$SOMESTRING" "$VARTEST_EVALUATED"
mas lembre-se (como outros já disse): Se possível, utilizar
VARTEST="$TEST/foo/bar"
em vez de
VARTEST='$TEST/foo/bar'
usar o segundo só se você realmente precisa espécie de 'avaliação preguiçosa' ...
Atenção, isso poderia ser perigoso se $VARTEST
contém código malicioso.
Outras dicas
Você colocar aspas simples em torno de algo? plicas vai impedir que as variáveis ??de ser traduzido para os seus valores correspondentes. aspas vai funcionar embora. Por exemplo:
#!/bin/sh
TEST="/etc"
VARTEST="$TEST/passwd"
grep "$LOGNAME" "$VARTEST"