문제

환경 변수가 호출되어 있습니다 $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"
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top