我有称为$TEST的环境变量,其指的是目录 在我的bash脚本我有一个可变称为$VARTEST$TEST/dir/file

现在我要到grep由$VARTEST指定的文件,所以我尝试做:点击 grep somestring $VARTEST但进入它的目录也不能翻译$TEST

我试图{}""的不同组合和''但没有成功

有帮助吗?

解决方案

我想你想

eval grep somestring "$VARTEST"

或甚至

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

但要记住(如其他已经说过):如果可能使用

VARTEST="$TEST/foo/bar"

代替

VARTEST='$TEST/foo/bar'

使用第二个前提是你真的需要一种“懒惰评估” ......

警告,如果$VARTEST包含的恶意代码,这可能是危险的。

其他提示

你有没有把单引号括起来的东西吗?单引号将防止被翻译成相应的值的变量。双引号会的工作,虽然。例如:

#!/bin/sh

TEST="/etc"
VARTEST="$TEST/passwd"
grep "$LOGNAME" "$VARTEST"
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top