osascript를 사용하여 Bash 변수를 설정하는 것은 항상 올바르지 않습니다.

osascript를 사용하여 Bash 변수를 설정하는 것은 항상 올바르지 않습니다.

사용자 입력을 기반으로 변수를 설정하려고 합니다. 사용자에게 메시지를 표시하도록 구성한 내용이 "버튼 반환됨:예" 또는 "버튼 반환됨:아니요"로 응답한다는 것을 알고 있습니다.

버튼이 '예'를 반환하면 변수를 "True"로 설정하고 싶습니다. 버튼이 no를 반환하면 "False"입니다.

이것이 내가 지금까지 가지고 있는 것입니다:

response="button returned:yes"
var=`/usr/bin/osascript -e 'display dialog "Is a reboot required?" buttons {No,Yes}'`
/bin/test "$response" = "$var" && reboot="True" || reboot="False"

내가 도대체 ​​뭘 잘못하고있는 겁니까? $reboot 변수는 사용자 입력에 관계없이 항상 false로 설정됩니다. 이것은 macOS 시스템에서 실행되도록 고안된 bash 스크립트입니다.

답변1

스크립트 사본 끝에 다음 줄을 추가합니다.

echo "r: '$response'; v: '$var'; b: '$reboot'"

다음과 같은 출력을 제공합니다.

r: 'button returned:yes'; v: 'button returned:yes '; b: 'False'

osascript출력에 공백을 추가하는 것 같고 가 "string"와 같지 않기 때문에 "string "테스트가 예상대로 작동하지 않습니다.

관련 정보