2 votes

Comment utiliser le bouton d'annulation dans Osascript pour arrêter l'exécution de script.

Voici mon script de 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

J'ai besoin que le script s'arrête si l'utilisateur clique sur le bouton "Annuler". Actuellement, le script attend que l'utilisateur clique sur l'un ou l'autre bouton, puis exécute le code bash. Comment puis-je arrêter le script ?

Il doit pouvoir fonctionner sur Mac OS 10.6 à 10.10, sans ajouts tiers.

3voto

Vic Points 1820

Que pensez-vous de ceci ?

  • Il fonctionne sur mon Macbook 10.6.
  • C'est plus propre que de devoir échapper aux guillemets, etc.
  • osascript renvoie un état comme les programmes Unix normaux.
  • Le script de Bash s'interrompt sur un statut 1 à partir d'osascript.
  • Pas de messages inutiles de la part d'osascript - >dev/null 2>&1

Je n'ai rien d'autre à tester. Il se peut que vous deviez ajuster pour d'autres versions d'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

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X