문제
환경 변수가 호출되어 있습니다 $TEST
내 배쉬 스크립트의 디렉토리를 말하면 변수가 호출됩니다. $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