2 votos

Cómo utilizar el botón Cancelar en Osascript para detener la ejecución de Script

Aquí está mi script básico:

#!/bin/bash

osascript  -e 'tell application id "com.apple.systemevents"'
-e 'display dialog "Do you want to continue?" & return & return &
 " Please wait..." buttons {"Cancel", "Okay"} default button
2 cancel button "Cancel"' -e 'end tell' -e 'if button returned is "Cancel" then'
-e '<blah blah kill this script>' -e 'end if'

-- other bash stuff here

Necesito el script para detener si el usuario hace clic en el botón "Cancelar". Como lo es ahora la secuencia de comandos espera hasta que el usuario hace clic en cualquiera de los botones y luego procede a ejecutar el código en bash. ¿Cómo puedo matar a la escritura?

Esto para poder ejecutar en Mac OS 10.6 a través de 10.10, no hay complementos de terceros.

3voto

SPRBRN Puntos 1008

¿Qué tal esto?

  • Funciona en mi Macbook 10.6.
  • Es más limpio que tiene que escapar comillas etc....
  • osascript devuelve un estado como programas normales de unix.
  • Bash script aborta en un estado 1 de osascript.
  • No hay mensajes innecesarios de osascript - >dev/null 2>&1

No tengo nada para probar en. Puede que necesite ajustar para otras versiones de OSX.

#!/bin/bash

osascript >/dev/null 2>&1 <<-EOF
tell application id "com.apple.systemevents"
   set myMsg to "Do you want to continue?" & return & return & " Please wait..."
   set theResp to display dialog myMsg buttons {"Cancel", "Okay"} default button 2 
end tell

# Following is not really necessary. Cancel returns 1 and OK 0 ...
if button returned of theResp is "Cancel" then
   return 1
end if
EOF

# Check status of osascript
if [ "$?" != "0" ] ; then
   echo "User aborted. Exiting..."
   exit 1
fi

#-- other bash stuff here
echo "All good, moving on...."

HTH

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X