Вопрос

У меня есть переменная окружения $TEST, которая ссылается на каталог в моем скрипте bash у меня есть переменная $VARTEST, которая $TEST/dir/file

Теперь я хочу выполнить поиск файла, указанного в grep somestring $VARTEST, поэтому я пытаюсь сделать следующее:
{} но это не переводит "" в каталог

Я пробовал разные комбинации '', <=> и <=>, но безуспешно

Это было полезно?

Решение

Я думаю, что вы хотите

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