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