变量中的环境变量

时间:2009-03-16 16:52:43

标签: bash shell environment-variables

我有一个名为$TEST的环境变量,它引用一个目录 在我的bash脚本中,我有一个名为$VARTEST的变量$TEST/dir/file

现在我想grep $VARTEST指定的文件,所以我试着这样做:
grep somestring $VARTEST但它不会将$TEST转换为其目录

我尝试过{}""''的不同组合,但没有成功

2 个答案:

答案 0 :(得分:6)

我想你想要

eval grep somestring "$VARTEST"

甚至

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

但请记住(正如其他人已经说过的):如果可能的话,使用

VARTEST="$TEST/foo/bar"

而不是

VARTEST='$TEST/foo/bar'

只有当你真的需要'懒惰评估'时才使用第二个......

警告,如果$VARTEST包含恶意代码,则可能会有危险。

答案 1 :(得分:1)

你有单引号吗?单引号将阻止变量转换为相应的值。双引号会起作用。例如:

#!/bin/sh

TEST="/etc"
VARTEST="$TEST/passwd"
grep "$LOGNAME" "$VARTEST"