0

我正在使用 AppleScript 来启动一个又快又脏的 shell 脚本:

tell application "Terminal"
activate
do script "$(" & quoted form of MyScriptPath & ")"
end tell

哪个正确启动终端窗口并输入我期望的内容:

~$ $('/my script path/myscript.sh')

但是,似乎在首先评估/调用脚本时,输出到 STDOUT(通过 echo)的任何内容都被评估为好像它在 $( ) 内:

#!/bin/sh
echo "foobar"

产生:

-bash: foobar: command not found

在将脚本位置发送到终端之前,我已经进行了广泛的搜索,并没有真正找到一种合适的方法来在 AppleScript 中转义路径中的空格(而不是使用“引用的形式”),但我更喜欢这样。我使用的是“do script”而不是“do shell script”,因为在终端中启动的脚本是交互式的,需要集中注意力。

通过 $( ) 调用脚本时如何回显到 STDOUT?

4

1 回答 1

1

您不需要$(...)运行命令,只需将该命令的输出包含在另一个字符串中你只需要

tell application "Terminal"
activate
do script "/my script path/myscript.sh"
end tell
于 2013-02-21T00:07:20.863 回答