함수의 출력을 캡처하되 종료되도록 놔두세요.

함수의 출력을 캡처하되 종료되도록 놔두세요.

다음과 같이 정의한다고 가정해 보겠습니다 fct.

fct() {
  echo words
  read -n1 x
  [ $x == q ] && exit
}

호출은 예상대로 작동 하지만 fct출력을 캡처해야 하는 경우에는 작동하지 않습니다 . 온라인에서 검색한 내용에 따르면 작동하지만 결과 쉘이 종료됩니다. 그것은 작동하므로 동일한 프로세스 , 다른 컨텍스트 에서 실행되고 쉘이 아닌 컨텍스트만 종료합니다.var=`fct`exitexitkill -s KILL $$fct=exit

fct출력을 캡처하고 exit동일하게 동일한 컨텍스트에서 종료 하도록 호출할 수 있는 메서드가 있습니까 ? 아니면 강제 종료 외에 프로세스를 중지할 수 있는 다른 방법이 있습니까?

답변1

나는 그것을 생각했다!

임시 파일을 통해 스트림을 전달할 수 있습니다! 리눅스에서는 /dev/shm데이터가 메모리에 유지되도록 파일을 통해 전달할 수 있습니다 . 함수로 감쌀 수도 있습니다:

get_output() {
  $1 > /dev/shm/bash_pipe
  eval $2=`cat /dev/shm/bash_pipe`
  rm /dev/shm/bash_pipe
}

그런 다음 다음과 같이 사용할 수 있습니다. 그리고 get_output fct varwith의 출력을 사용할 수 있습니다.fct$var

관련 정보