Il risultato di Applescript di tell come argomenti

-2
tell application "Safari" to set the content of var1 to URL of active tab of front window
do shell script "grep " & var1 & "path-to-my-file/file"

Se l'URL della scheda attiva in Safari è link il applescript simula il seguente comando:

grep link ...... / file

Voglio farlo senza memorizzare il risultato di "tell application safari" in una variabile. Ci provo ma non funziona

do shell script "grep " & tell application "Safari" to return URL of ....... & "...../file" 
    
posta gino 19.02.2017 - 15:52
fonte

1 risposta

0

Prima di tutto, la tua prima riga di code tell application "Safari" to set the content of var1 to URL of active tab of front window non viene nemmeno compilata! Errori con " Errore di sintassi Un nome di classe non può andare dopo questo identificatore." puntando a active tab . Quindi, do shell script "grep " & var1 & "path-to-my-file/file" potrebbe non funzionare come scritto comunque!

Un modo corretto per ottenere URL sarebbe:

tell application "Safari" to get the URL of current tab of window 1 of application "Safari"

O per impostarlo su una variabile , usa:

tell application "Safari" to set theURL to (get the URL of current tab of window 1 of application "Safari")

Quindi, le prime due righe di code nella tua domanda funzionerebbero se usate come:

try
    tell application "Safari" to set theURL to (get the URL of current tab of window 1 of application "Safari")
    do shell script "grep " & quoted form of theURL & " /path/to/target/file"
end try
  • Nota c'è uno spazio dopo la doppia citazione prima di /path/to/target/file e questo spazio è necessario.

  • Anche il codice è racchiuso in un'istruzione try per intercettare eventuali errori. Sebbene tu abbia bisogno di aggiungere ulteriore codice per elaborare gli errori (s) di conseguenza usando un on error gestore . Mentre l'istruzione try nasconderà un errore , sarà necessario utilizzarlo in combinazione con un on error gestore se grep non lo fa trova una corrispondenza e vuoi eseguire un'ulteriore elaborazione in base ai risultati del comando grep che non trova una corrispondenza.

Se vuoi davvero farlo senza impostare URL su una variabile , usa questo metodo:

try
    do shell script "grep $(osascript -e 'tell application \"Safari\" to get the URL of current tab of window 1 of application \"Safari\"')" & " /path/to/target/file"
end try

Si noti che in questo caso lo spazio necessario può essere come mostrato, dopo la doppia citazione prima del nomepercorso , oppure può essere inserito dopo le parentesi di chiusura di $(...) e prima della doppia virgola di chiusura prima della e commerciale, es .: ...\"Safari\"') " &

    
risposta data 19.02.2017 - 18:15
fonte

Leggi altre domande sui tag