Pregunta

Tengo una variable de entorno llamada $ TEST que se refiere a un directorio en mi script bash tengo una variable llamada $ VARTEST que es $TEST/dir/file

ahora quiero grep el archivo especificado por $ VARTEST , así que trato de hacer:
grep somestring $ VARTEST pero no traduce $ TEST en su directorio

He probado diferentes combinaciones de {} , " " y '' pero sin éxito

¿Fue útil?

Solución

Creo que quieres

eval grep somestring "$VARTEST"

o incluso

VARTEST_EVALUATED=$(eval echo $VARTEST)
grep "$SOMESTRING" "$VARTEST_EVALUATED"

pero recuerde (como ya han dicho otros): si es posible, use

VARTEST="$TEST/foo/bar"

en lugar de

VARTEST='$TEST/foo/bar'

use el segundo solo si realmente necesita una especie de 'evaluación perezosa' ...

Advertencia, esto podría ser peligroso si $ VARTEST contiene código malicioso.

Otros consejos

¿Has puesto comillas simples alrededor de algo? Las comillas simples evitarán que las variables se traduzcan a sus valores correspondientes. Sin embargo, las comillas dobles funcionarán. Por ejemplo:

#!/bin/sh

TEST="/etc"
VARTEST="$TEST/passwd"
grep "$LOGNAME" "$VARTEST"
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top