1 votos

Salida vacía al utilizar algunos comandos del shell a través de "do shell script" de AppleScript.

AppleScript le permite ejecutar comandos del shell con do shell script . Es fácil asignar una variable a una salida de dicho comando.

set theResult to do shell script "echo everything"

>> theResult = "everything"

En MacOS también se puede ejecutar código Javascript en Terminal con osascript :

osascript -l JavaScript << EOF

console.log('everything');

EOF

>> everything

Sin embargo, si se ejecuta esta pieza desde AppleScript, no se obtiene nada:

set theResult to do shell script "osascript -l JavaScript << EOF

console.log('everything');

EOF"

>> theResult = ""

También intenté asignar una variable de shell a la salida de osascript e imprimirla con echo. De nuevo, funciona en la Terminal:

theString=$(osascript -l JavaScript << EOF

console.log('everything');

EOF
)

echo $theString"

>> everything

Pero sigue sin funcionar cuando se ejecuta a través de do shell script :

set theResult to do shell script "theString=$(osascript -l JavaScript << EOF

console.log('everything');

EOF
)

echo $theString"

>> theResult = ""

¿Por qué ocurre esto? ¿Cómo hacer que funcione?

Apreciaré su ayuda.

Mi objetivo es poder hacer algún procesamiento de texto con Javascript dentro de un AppleScript script.

No me interesa poner el código Javascript en un archivo externo .js, prefiero mantenerlo en su sitio.

0voto

siva Puntos 23

console.log en osascript sale a stderr (error estándar), no a stdout (salida estándar). Redirige stderr a stdout para que la salida sea capturada en una variable usando 2>&1 .

set theResult to do shell script "osascript -l JavaScript 2>&1 << EOF
console.log('everything');
EOF"

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