7 votos

Cómo pasar variables de bash script a AppleScript

Tengo un archivo con una lista de URLs. Necesito pasar cada URL desde un bash script para ser utilizado en un AppleScript.

while read urls
do 
    osascript -e \
    'tell application "Safari"
        tell window 1 
            tell current tab to open location "$urls"
        end tell
    end tell'
done <file.txt

Esto no funciona. Pasa la cadena literal $urls como la ubicación a abrir en Safari. ¿Cómo puedo pasar la variable bash $urls a AppleScript?

3voto

user3439894 Puntos 5883

Esto debería funcionar:

while read urls
do 
    osascript -e "tell application \"Safari\" to open location \"$urls\""
done<file.txt

2voto

Douglas Puntos 10417

Las comillas no expanden la variable en AppleScript. Lo que tienes que hacer es ESCAPAR las comillas:

'decirle a la pestaña actual que abra la ubicación \ "$urls\"`

Sin embargo, una mejor manera de hacerlo es utilizando run argv . Por ejemplo:

#!/bin/bash
url="foobar.com"
osascript -e 'on run {myurl}' -e 'tell application "Safari" to set the URL of the document to myurl' -e 'end run' $url 

Mi preferencia es utilizar un separar script para el AppleScript. En bash, esto se vería así:

#!/bin/bash
osascript -e 'do scriptname \"$url\"'

0 votos

Las comillas dobles hacer expanden, los únicos alrededor de todo el script no lo hacen.

0 votos

@patrix - Nunca me he encontrado con el problema de que lo que estaba en la comilla simple no funcionara como se esperaba, al menos por lo que recuerdo.

0 votos

Estoy recibiendo un error - syntax error: A “,” can’t go after this command name.

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