2010-11-05 8 views
0

Est-il possible de joindre des lignes d'applescript en une seule (en ruby ​​cela peut être fait en utilisant ;)?applescript oneliner

+0

Que voulez-vous faire? Voulez-vous avoir un morceau de commandes que vous pouvez exécuter à la demande? –

+0

Je l'ai demandé il y a un an, il est un peu difficile de se souvenir exactement :) Je pensais que je pensais qu'il s'agissait d'utiliser 'osascript -e ...' – tig

Répondre

6

Pas vraiment. Le plus qui peut être fait est de prendre une déclaration if-then simple et en faire une ligne ...

if (variable) then 
    return true 
end if 

... devient ...

if (variable) then return true 

Si vous deviez inclure le osascript commande dans un script shell, puis plusieurs scripts de ligne doit délimité par -e ...

osascript -e 'if (variable) then' -e 'return true' -e 'end if' 

Mais ce qui est de l'ampleur de celui-ci. Les fichiers Applescript ne sont pas des fichiers texte simples comme la plupart des autres langages de programmation (malheureusement) et nous devons compter sur ses éditeurs spécialisés pour la gestion de ligne.

+0

triste d'entendre ce – tig

+0

+1 pour plusieurs déclarations '-e', jamais pensé de Faisant cela. Merci! (Dans mon cas, je voulais intégrer un morceau d'AppleScript dans une recette Makefile, qui ne traite pas trop bien les retours à la ligne ...) – Alhadis

0

Si vous voulez vraiment éviter -e et forcer tout sur une seule ligne, vous pouvez pousser tout à travers echo

osascript -e "`echo -e \"tell application \\"MyApp\\"\nactivate\nend tell\"`" 

" deviennent \\" et deviennent les nouvelles lignes \n.

+5

Ceci n'est pas nécessaire. Juste 'osascript -e $ 'dit à l'application" MyApp "\ nactiver \ nend dire' 'suffit. –

3

Cela dépend de votre code. Lorsque vous utilisez AppleScript pour les scripts GUI, vous pouvez souvent écrire un groupe de blocs tell imbriqués en une seule ligne.

Par exemple, ces blocs TELL imbriqués:

tell application "System Preferences" 
    activate 
end tell 

tell application "System Events" 
    tell application process "System Preferences" 
     tell window "System Preferences" 
      tell scroll area 1 
       tell button "General" 
        click 
       end tell 
      end tell 
     end tell 
    end tell 
end tell 

Ils pourraient aussi être écrits comme:

tell application "System Preferences" to activate 
tell application "System Events" to tell application process "System Preferences" to tell window "System Preferences" to tell scroll area 1 to tell button "General" to click 
+0

Cela peut être utile pour les personnes qui arrivent ici de la recherche, mais cela ne permet pas de joindre ces deux appels en une seule ligne – tig

0

Je réarrangé AppleScript d'un format de bloc, à un seul format de ligne en tant que telle :

format bloc

tell application <application> 
    activate 
    open location <url> 
end tell 

format ligne unique

osascript -e "tell application \"<application>\" to activate & open location \"<url>\"";