Definir variável Bash com osascript sempre incorreto.

Definir variável Bash com osascript sempre incorreto.

Estou tentando definir uma variável com base na entrada do usuário. Eu sei que o que configurei para avisar o usuário responderá com "botão retornado: sim" ou "botão retornado: não".

Gostaria que a variável fosse definida como "True" se o botão retornar sim. e "False" se o botão retornar não.

Isto é o que tenho até agora:

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"

O que estou fazendo de errado? A variável $reboot está sempre definida como falsa, independentemente da entrada do usuário. Este é um script bash, destinado a ser executado em um sistema macOS.

Responder1

Adicionando esta linha ao final de uma cópia do seu script:

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

fornece esta saída:

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

Parece que osascriptestá acrescentando um espaço à saída e, como "string"não é igual a "string ", seu teste não funciona conforme o esperado.

informação relacionada