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

Foi útil?

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"
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top