0 votos

Applescript resultado de tell como argumentos

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"

Si la url de la pestaña activa en Safari es https://apple.stackexchange.com/ el applescript simula el siguiente comando:

grep https://apple.stackexchange.com/ ....../archivo

Quiero hacerlo sin almacenar el resultado de "tell application safari" en una variable. Intento esto pero no funciona

do shell script "grep " & tell application "Safari" to return URL of ....... & "...../file"

1voto

user3439894 Puntos 5883

En primer lugar, su primera línea de código tell application "Safari" to set the content of var1 to URL of active tab of front window ni siquiera compila. El error es " Error de sintaxis Un nombre de clase no puede ir después de este identificador", señalando active tab . Así que, do shell script "grep " & var1 & "path-to-my-file/file" ¡no podría funcionar como está escrito de todos modos!

Una forma adecuada de conseguir el URL sería:

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

O bien, para establecerlo en un variable usar:

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

Así, las dos primeras líneas de código en su pregunta funcionaría si se utiliza como:

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
  • Tenga en cuenta que hay un espacio después de la comilla doble antes de /path/to/target/file y esto espacio es necesario.

  • También el código está envuelto en un try declaración para atrapar cualquier error. Aunque tendría que añadir un código para procesar el error(es) en consecuencia utilizando un on error manipulador . Mientras que el try declaración ocultará un error Utilizándolo junto con un on error manipulador será necesario si grep no encuentra una coincidencia y desea realizar un procesamiento adicional basado en los resultados del grep comando no encontrar una coincidencia.

Si realmente quieres hacerlo sin poner el URL a un variable Entonces utilice este método:

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

Tenga en cuenta que en este caso la espacio puede ser como se muestra, después de la doble comilla antes del ruta de acceso o puede colocarse después del paréntesis de cierre de $(...) y antes de la comilla doble de cierre antes del ampersand, por ejemplo ...\"Safari\"') " &

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X