2011-04-11 5 views
3

Je dois pouvoir exécuter AppleScript dans un script shell. J'utilise "AppleScript Runner" pour être en mode interactif, de sorte que les boîtes de dialogue etc. sont supportées. Je l'ai fonctionné, mais j'ai besoin d'obtenir le statut de sortie de l'application AppleScript Runner retour à l'interpréteur de commandes, afin que je puisse voir s'il y avait des erreurs dans le script.Statut de sortie AppleScript Runner renvoyé au script shell

Voici mon script shell:

output=$(/usr/bin/osascript << EOT 
tell application "AppleScript Runner" 
do script "somescript.scpt" 
end 
EOT) 

status=$? 

Voici mon statut variable $ se termine seulement avec l'état de sortie de la commande osascript (qui sera 0 ou non somescript.scpt effectivement couru avec succès), et pas le statut de sortie de l'application AppleScript Runner.

Est-ce que quelqu'un sait comment je pourrais accomplir cela?

Merci!

Répondre

2

L'indicateur -e imprime les erreurs sur stderr et est la valeur par défaut. Donc vous avez juste besoin de lire stderr.

Cette réponse pourrait vous aider si vous n'êtes pas familier avec ce:

bash variable capture stderr and stdout separately or get exit value

EDIT: exemple de code ajouté.

error=`osascript -e 'tell app "Finder" to adtivate' 2>&1` 
echo $error 

Ce qui précède sur mon système capture les messages d'erreur.

+0

Je semble recevoir uniquement les messages d'erreur dans stdout et pas stderr avec cette configuration. J'ai aussi utilisé "set -e" dans mon script shell. – krill

+0

Je viens de tester un petit script sur mon système et ça va stderr. – Clark

Questions connexes