gpt4 book ai didi

macos - 我怎样才能摆脱这个 osascript 输出?

转载 作者:行者123 更新时间:2023-11-29 09:09:55 25 4
gpt4 key购买 nike

以下问题与发布在 this question 上的答案有关:

我喜欢创建自己的函数来打开新终端的想法,因此 Craig Walker 在上述问题中链接到的脚本符合我的需要。该脚本由 Mark Liyanage 编写,已找到 here.

那个脚本是这样的:

#!/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

我对链接站点上的脚本做了一处更改;我注释掉了输出“$COMMAND $EXIT”的行以消除一些冗长。但是,当我运行脚本时,我仍然得到这个输出

tab 1 of window id 2835

就在它打开新窗口并执行我传入的命令之前。知道为什么会发生这种情况吗? (我尝试在调用 oascript 之前将 stderr 的重定向移动到/dev/null,但这没有任何区别。)

最佳答案

tab 1 of window 2835do script 命令返回的对象的 AppleScript 表示:它是创建的 tab 实例执行命令。 osascript 将脚本执行的结果返回到标准输出。由于 AppleScript 脚本中没有明确的 return,整个脚本的返回值是最后执行语句的结果,通常是 do script 命令。两个最简单的修复方法是重定向 osascript 的标准输出(最好重定向标准错误,以防出现错误):

osascript >/dev/null <<EOF

或者在 AppleScript 中插入一个显式的 return(没有值)。

tell application "Terminal"
activate
do script with command "$COMMAND $EXIT"
end tell
return

关于macos - 我怎样才能摆脱这个 osascript 输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4146516/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com