grep 결과에서 나오는 줄을 실행하는 방법? 있다는 것을 알고

특정 설치 지침이 포함 된 텍스트 파일이 있으며 파일에서 고유 한 항목을 grep 할 수 있다는 것을 알고 있습니다. 예를 들어, 텍스트 파일은 다음과 같습니다.

MYDIR =`찾기 / home / user-이름 somedir`
수출 PERL5LIB = $ PERL5LIB : $ MYDIR

bash에서 파일에서 grep 후 행을 어떻게 실행할 수 있습니까? 다음과 같은 것 :

"grep somedir INSTALLFILE"의 결과 실행
"grep 'export PERL5LIB'INSTALLFILE"의 결과 실행



답변

가정 :

  • 이 파일을 제어 할 수 있으며 악성 코드의 위험이 없습니다
  • 이 변수를 현재 쉘로 설정하려고합니다

명령을 임시 파일로 리디렉션하고 다음을 실행할 수 있습니다.

tmp=$(mktemp)
{
    grep somedir INSTALLFILE
    grep 'export PERL5LIB' INSTALLFILE
} > "$tmp"
. "$tmp"

또는 결과를 평가할 수 있습니다

eval "$(grep somedir INSTALLFILE)"
eval "$(grep 'export PERL5LIB' INSTALLFILE)"

오래된 답변을 업데이트합니다. 내가 오늘 할 일은 프로세스 대체를 사용하는 것입니다.

source <(
    grep somedir INSTALLFILE
    grep 'export PERL5LIB' INSTALLFILE
)


답변

별도의 쉘 프로세스에서 행을 평가하려면 다음을 수행하십시오.

grep somedir INSTALLFILE | sh

실행중인 쉘 프로세스에서 행을 평가하려면 다음을 수행하십시오.

eval "$(grep somedir INSTALLFILE)"


답변

다음과 같이 find의 ‘exec’기능 사용을 고려 했습니까?

find somedir -name INSTALLFILE -exec {}\;


답변