Resultado de la aplicación de Apple como argumento como argumentos

-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"

Si la URL de la pestaña activa en Safari es enlace el applecript simula el siguiente comando:

grep enlace ...... / file

Quiero hacer eso sin almacenar el resultado de "decirle al safari de la aplicación" en una variable. Intento esto pero no funciona

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

1 respuesta

0

En primer lugar, ¡tu 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! Se produce un error con " Error de sintaxis Un nombre de clase no puede ir detrás de este identificador". apuntando a active tab . Por lo tanto, do shell script "grep " & var1 & "path-to-my-file/file" no podría funcionar como está escrito de todos modos.

Una forma correcta de obtener URL sería:

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

O para establecerlo en una variable , use:

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

Por lo tanto, las primeras dos líneas de código en tu pregunta funcionarán si se usan 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
  • Note que hay un espacio después de la comilla doble antes de /path/to/target/file y este espacio es necesario.

  • También el código está envuelto en una declaración try para atrapar cualquier error. Aunque necesitaría agregar código adicional para procesar el error (s) en consecuencia usando un controlador on error . Si bien la declaración try ocultará un error , será necesario utilizarlo junto con un controlador on error si grep no lo hace. no encuentra una coincidencia y desea realizar un procesamiento adicional basado en los resultados del comando grep que no encuentra una coincidencia.

Si realmente quieres hacerlo sin configurar el URL a una variable , usa 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, el espacio necesario puede ser el que se muestra, después de la comilla doble antes del nombre de ruta , o se puede colocar después del paréntesis de cierre de $(...) y antes de la comilla doble final antes del símbolo, por ejemplo: ...\"Safari\"') " &

    
respondido por el user3439894 19.02.2017 - 18:15

Lea otras preguntas en las etiquetas