带bash和applescript的字符串文字

Kev*_*lan 4 bash shell applescript

这是基于以下答案:

https://apple.stackexchange.com/questions/103565/bash-script-that-will-start-up-second-terminal-process

在终端中执行此applescript命令可以正常工作(它会打开一个新窗口并告诉我正常运行时间):

osascript -e 'tell app "Terminal" to do script "uptime"'
Run Code Online (Sandbox Code Playgroud)

但是,尝试将变量作为字符串文字传递不起作用:

cmd="'tell app \"Terminal\" to do script \"uptime\"'"
osascript -e ${cmd}
Run Code Online (Sandbox Code Playgroud)

“ 0:1:语法错误:未知令牌无法在此处发送。(-2740)”

这是怎么回事?

McU*_*Usr 6

我无法真正解释以下内容为何起作用,但从定义上讲,它与解析Shell中的文本有关。$ cmd周围的引号表明保留了空间。Osa脚本本身对撇号(字母)不太满意,所以我想这就是您的版本不起作用的原因。

您可以这样:

 cmd="tell application \"Terminal\" to do script \"uptime\""
 osascript -e "$cmd"
Run Code Online (Sandbox Code Playgroud)

至少这对我有用。:)