Si je voulais exécuter un AppleScript à partir d'un script bash, je pouvais appeler un fichier avec la liste des commandes à exécuter.
#!/bin/bash
{some commands}
osascript file.scpt
{other commands}
Quoi, cependant, si je voulais exécuter des commandes qui devaient être exécutées dans l'ordre à partir de bash?
Un exemple serait
#!/bin/bash
echo
echo This will open Google Chrome in Kiosk mode
osascript -e "tell application \"Google Chrome\""
osascript -e "activate"
osascript -e "tell application \"System Events\""
osascript -e "key down {command}"
osascript -e "key down {shift}"
osascript -e "keystroke \"f\""
osascript -e "key up {shift}"
osascript -e "key up {command}"
osascript -e "end tell"
echo "Google Chrome is now open in Kiosk Mode"
Je sais que cet exemple est très tiré par les cheveux, mais cela explique ce que j'essaie de faire. Normalement, ces commandes seraient toutes écrites sans leurs \
caractères d' échappement respectifs et moins "
autour de chaque commande. Je les aurais aussi à l'intérieur d'un .scpt
fichier.
Une solution à ma connaissance est de réécrire le script en utilisant #!/usr/bin/osascript
bash et ensuite à partir de là, mais je veux pouvoir mélanger. J'ai constaté que je pouvais tester un fichier de script. S'il existait, il en créerait un et ajouterait chaque commande dont j'avais besoin à ce fichier, puis exécuterait le fichier de script requis à partir de bash, mais cela irait également à l'encontre du but recherché.
Il n'y a aucun moyen de passer d'un fichier à un autre. Je peux échanger le shell utilisé avec la shebang
ligne, puis revenir après avoir exécuté les commandes nécessaires, n'est-ce pas?
Toute idée serait plus que bienvenue.
la source
end tell
du script.-e
de l'exemple HEREDOC?-e statement Enter one line of a script. If -e is given, osascript will not look for a filename in the argument list. Multiple -e options may be given to build up a multi-line script. Because most scripts use characters that are special to many shell programs (for example, AppleScript uses single and double quote marks, ``('', ``)'', and ``*''), the statement will have to be correctly quoted and escaped to get it past the shell intact.
-e statement Enter one line of a script
il y a un-e
cadeau. Mais à part cela, un HEREDOC est-il traité comme s'il s'agissait d'une seule ligne?Vous pouvez envelopper le AppleScript brut dans
<<EOD
... Le dernierEOD
signal indiquant que la fin de la saisie doit venir à la première position de la ligne.(BTW, votre pomme de texte semblait manquer un
end tell
aprèsactivate
....)la source