题
我有称为$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"
不隶属于 StackOverflow