2 votos

Como pasar variable en bash script a osascript

He pasado horas investigando esta cuestión, pero ninguna de las respuestas que he encontrado parece funcionar. Quiero pasar una ruta POSIX a algún AppleScript que se ejecute en un shell script, pero nada de lo que he probado permite a AppleScript utilizar la variable.

Aquí hay algo que muestra (de la forma más simple posible) lo que estoy tratando de hacer (mi script real utilizará Microsoft Word para abrir el archivo nombrado en la ruta y luego guardarlo en otro formato):

#!/bin/bash

INFILE="$1"

osascript << 'EOD'
display dialog "$INFILE"
EOD

He probado a escapar las comillas; he probado con comillas dobles-simples-dobles; he probado con paréntesis y llaves; he probado a usar el nombre del archivo como parámetro y a poner una variable en el elemento 1 de argv. Nada de lo que he probado funciona. La respuesta es probablemente obvia para cualquier experto, y agradeceré cualquier ayuda.

0 votos

Parece que se responde aquí: stackoverflow.com/questions/67406491/

3voto

siva Puntos 23

Es necesario pasar la variable como argumento a osascript en su lugar.

Esto se discute en profundidad en osascript como pasar una variable - Stack Overflow .

Esta es la forma correcta y segura de sanear cadenas arbitrarias a través de los tres niveles de generación de código:

bar='$test" \t#est*;say bad script' # a proper nasty test string

osascript -  "$bar"  <<EOF

    on run argv -- argv is a list of strings
        tell application "Terminal"
            do script ("echo " & quoted form of item 1 of argv)
        end tell
    end run

EOF

0 votos

Gracias, grg. Cuando lo intenté, no conseguí que funcionara por mi propia incompetencia: Omití el guión entre osascript y la variable citada. Tu ejemplo me ha enseñado exactamente lo que necesito saber. Gracias de nuevo.

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