¿Cómo puedo deshacerme de esta salida osascript?
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.)
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