我有一个名为$TEST
的环境变量,它引用一个目录
在我的bash脚本中,我有一个名为$VARTEST
的变量$TEST/dir/file
现在我想grep $VARTEST
指定的文件,所以我试着这样做:
grep somestring $VARTEST
但它不会将$TEST
转换为其目录
我尝试过{}
,""
和''
的不同组合,但没有成功
答案 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"