쉘 스크립트는 grep 값을 사용하여 환경 변수를 설정할 수 없습니다.

쉘 스크립트는 grep 값을 사용하여 환경 변수를 설정할 수 없습니다.

쉘 스크립트에서 로그 파일의 값을 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

원칙적으로 솔루션은 작동해야 하지만 강력하지는 않습니다. 예를 들어, greped 파일의 일치하는 줄에 다음과 같은 주석(또는 기타 항목)이 있는 경우:

SOME_PATH=/some/path # this is some path

그러면 해당 주석도 확장된 이름의 일부가 됩니다 path. 경로에 실제로 무엇이 있는지 확인하려면(예: via printf "'%s'\n" "$path")

이런 방식으로 환경 변수를 설정하면 환경 변수가 설정된 셸 인스턴스와 하위 프로세스에만 영향을 미치고 주변 환경에는 영향을 주지 않습니다.

관련 정보