
다음과 같이 정의한다고 가정해 보겠습니다 fct
.
fct() {
echo words
read -n1 x
[ $x == q ] && exit
}
호출은 예상대로 작동 하지만 fct
출력을 캡처해야 하는 경우에는 작동하지 않습니다 . 온라인에서 검색한 내용에 따르면 작동하지만 결과 쉘이 종료됩니다. 그것은 작동하므로 동일한 프로세스 , 다른 컨텍스트 에서 실행되고 쉘이 아닌 컨텍스트만 종료합니다.var=`fct`
exit
exit
kill -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 var
with의 출력을 사용할 수 있습니다.fct
$var