쉘 스크립트에서 로그 파일의 값을 grep하여 환경 값으로 설정하고 싶습니다. 로그 파일에는 다음 줄이 있습니다.
SOME_PATH=/some/specific/path
내 쉘 스크립트에서 키워드를 찾아 SOME_PATH
위의 줄을 가져온 후 로 구분 =
하지만 이제 환경 변수를 설정할 수 있습니다.
line=`grep "SOME_PATH" /path/to/the/log.log`
path=${line##*=}
export SOME_PATH="$path" #I cannot change the environment variable with this line.
bash 파일에 아래와 같은 스크립트만 있는 경우 bash 파일을 얻으면 환경 변수가 변경됩니다.
export SOME_PATH=/some/specific/path
답변1
원칙적으로 솔루션은 작동해야 하지만 강력하지는 않습니다. 예를 들어, grep
ed 파일의 일치하는 줄에 다음과 같은 주석(또는 기타 항목)이 있는 경우:
SOME_PATH=/some/path # this is some path
그러면 해당 주석도 확장된 이름의 일부가 됩니다 path
. 경로에 실제로 무엇이 있는지 확인하려면(예: via printf "'%s'\n" "$path"
)
이런 방식으로 환경 변수를 설정하면 환경 변수가 설정된 셸 인스턴스와 하위 프로세스에만 영향을 미치고 주변 환경에는 영향을 주지 않습니다.