Come utilizzare il pulsante Annulla in Osascript per interrompere l'esecuzione di script

2

Ecco il mio script di base:

#!/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

Ho bisogno che lo script si fermi se l'utente fa clic sul pulsante "Annulla". Poiché ora lo script è in attesa fino a quando l'utente non fa clic su uno dei due pulsanti, procede quindi a eseguire il codice bash. Come posso uccidere lo script?

Questo per poter essere eseguito su Mac OS dalla 10.6 alla 10.10, nessun componente aggiuntivo di terze parti.

    
posta rogerFernand 06.04.2015 - 03:52
fonte

1 risposta

2

Che ne dici di questo?

  • Funziona con il mio Macbook 10.6.
  • È più pulito di dover evitare le virgolette ecc ...
  • osascript restituisce uno stato come i normali programmi unix.
  • Lo script di Bash si interrompe su uno stato 1 da osascript.
  • Nessun messaggio non necessario da osascript - >dev/null 2>&1

Non ho nient'altro per testarlo. Potrebbe essere necessario modificare le altre versioni di 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

    
risposta data 07.04.2015 - 22:13
fonte

Leggi altre domande sui tag