【发布时间】:2015-02-10 07:45:09
【问题描述】:
我正在使用 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?
【问题讨论】:
-
你想完成什么?特别是为什么要使用
$(...)?这意味着将封闭命令的输出替换为正在构建的当前命令行。如果你直接在 shell 中运行$(/path/to/myscript.sh),它会产生同样的错误,因为替换发生在新命令的第一个单词上。 -
感谢您的解释。我使用 $() 是因为我假设带引号的字符串不会导致该路径处的脚本执行。干杯
标签: shell applescript