Powershell : 함수에서 대화 형 프로그램을 호출하면 프로그램의 출력이 숨겨집니다. 이 문제를 해결하는 방법?

frp

내 기능 :

Function promptYesNo($prompt) {
  & dialog --yesno $prompt 0 0
  return 1-$LastExitCode
}

대화 상자는 내 경우에는 cygwin에서 가져온 프로그램으로 Text-UI 대화 상자를 만듭니다 (이와 같이 )

이 함수를 다음과 같이 호출하면 :

promptYesNo "Prompt"

모든 것이 예상대로 작동합니다. 하지만 함수의 결과를 다음과 같은 변수에 저장하려고하면 :

$var = promptYesNo "Prompt"

대화 상자에서 보이는 출력을 얻지 못합니다. 내 말은, 대화가 실행 중이고 내가하는 일에 반응하지만 나는 그것을 보지 않는다 (내 생각에는 출력이 어딘가로 리디렉션된다).

내가 뭘 잘못하고 어떻게 옳은 일을하나요?

던컨

이에 대한 가장 간단한 해결책은 함수의 출력을 리디렉션하지 않고 다른 방식으로 결과를 반환하는 것입니다. 작동해야하는 한 가지 방법은 다음과 같습니다.

Function promptYesNo($prompt, [string]$varname) {
  & dialog --yesno $prompt 0 0
  Set-Variable -Name "script:$varname" -Value (1-$LastExitCode)
}

promptYesNo "Some prompt" -varname "result"
echo $result

script:변수 설정 범위는 발신자의 범위 대신 함수 영역의 변수를 설정한다.

물론 이렇게하면 promptYesNo를 호출하는 스크립트 나 함수가 출력을 리디렉션하지 않도록해야합니다. 따라서 궁극적으로 코드를 호출하는 모든 항목으로 계속됩니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관