Reputation: 761
I have an environment variable called $TEST
which refers to a directory
in my bash script I have a variable called $VARTEST
which is $TEST/dir/file
now I want to grep the file specified by $VARTEST
so I try to do:
grep somestring $VARTEST
but it doesn't translate $TEST
into it's directory
I've tried different combinations of {}
, ""
and ''
but without success
Upvotes: 4
Views: 5918
Reputation: 54111
I think you want
eval grep somestring "$VARTEST"
or even
VARTEST_EVALUATED=$(eval echo $VARTEST)
grep "$SOMESTRING" "$VARTEST_EVALUATED"
but remember (as others already said): If possible use
VARTEST="$TEST/foo/bar"
instead of
VARTEST='$TEST/foo/bar'
use the second one only if you really need kind of 'lazy evaluation'...
Warning, this could be dangerous if $VARTEST
contains malicous code.
Upvotes: 6
Reputation: 3565
Have you put single quotes around something? Single quotes will prevent the variables from being translated into their corresponding values. Double quotes will work though. For example:
#!/bin/sh
TEST="/etc"
VARTEST="$TEST/passwd"
grep "$LOGNAME" "$VARTEST"
Upvotes: 1