Pregunta

La siguiente pregunta se refiere a una respuesta que fue publicado en esta pregunta :

Me gusta la idea de crear mi propia función que abre un nuevo terminal, por lo que el script que Craig Walker vinculado en dicha cuestión por encima de la referencia satisfizo mis necesidades. El guión, escrito por Mark Liyanage, se encuentra aquí.

Ese guión es la siguiente:

#!/bin/sh
#
# Open a new Mac OS X terminal window with the command given
# as argument.
#
# - If there are no arguments, the new terminal window will
#   be opened in the current directory, i.e. as if the command
#   would be "cd `pwd`".
# - If the first argument is a directory, the new terminal will
#   "cd" into that directory before executing the remaining
#   arguments as command.
# - If there are arguments and the first one is not a directory,
#   the new window will be opened in the current directory and
#   then the arguments will be executed as command.
# - The optional, leading "-x" flag will cause the new terminal
#   to be closed immediately after the executed command finishes.
#
# Written by Marc Liyanage <http://www.entropy.ch>
#
# Version 1.0
#

if [ "x-x" = x"$1" ]; then
    EXIT="; exit"; shift;
fi

if [[ -d "$1" ]]; then
    WD=`cd "$1"; pwd`; shift;
else
    WD="'`pwd`'";
fi

COMMAND="cd $WD; $@"
#echo "$COMMAND $EXIT"

osascript 2>/dev/null <<EOF
    tell application "Terminal"
        activate
        do script with command "$COMMAND $EXIT"
    end tell
EOF

Hice un cambio en la secuencia de comandos en el sitio enlazado; Comenté la línea que emite "$ $ comando EXIT" para eliminar algunos de verbosidad. Sin embargo, cuando corro el guión todavía consigo esta salida

tab 1 of window id 2835

justo antes de que se abre la nueva ventana y ejecuta la orden de que me pase en. Cualquier idea por qué esto estaría sucediendo? (He intentado mover el redireccionamiento de stderr a / dev / null antes de llamar a oascript, pero eso no importaba.)

¿Fue útil?

Solución

tab 1 of window 2835 es la representación de AppleScript del objeto devuelto por el comando do script: es la instancia tab creada para ejecutar el comando. osascript devuelve los resultados de la ejecución del script en la salida estándar. Puesto que no hay return explícito en la secuencia de comandos AppleScript, el valor devuelto de todo el guión es el resultado de la última declaración ejecutados, normalmente el comando do script. Las dos correcciones más fáciles son o bien stdout redirección de la osascript (y preferiblemente no stderr redirección en caso de errores):

osascript >/dev/null <<EOF

o insertar una return explícita (sin valor) en el AppleScript.

tell application "Terminal"
    activate
    do script with command "$COMMAND $EXIT"
end tell
return
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top