bash - 带有 bash 和 applescript 的字符串文字

标签 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"'

但是,尝试将变量作为字符串文字传递是行不通的:

cmd="'tell app \"Terminal\" to do script \"uptime\"'"
osascript -e ${cmd}

“0:1:语法错误:此处不能放置未知标记。(-2740)”

这是怎么回事?

最佳答案

我无法真正解释为什么下面的代码有效,但它明确地与在 shell 中解析文本有关。 $cmd 周围的引号确保空间被保留。 Osa 脚本本身对撇号(单引号)不太满意,所以我想这就是您的版本不起作用的原因。

你可以这样做:

 cmd="tell application \"Terminal\" to do script \"uptime\""
 osascript -e "$cmd"

至少这对我有用。 :)

关于bash - 带有 bash 和 applescript 的字符串文字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29155752/

相关文章:

macos - 从 Mac OS 终端使屏幕闪烁

linux - 如何使用linux命令或bash脚本解析大量html文件

objective-c - 像从 cmd+tab 一样获取 ProcessList

bash - 在 while 循环中丢失环境

linux - 我如何像在 java 中一样迭代文件?

linux - 在 Ubuntu(或任何 unix 类型的环境)中执行 shell 脚本时,如何在脚本之外持久保存导出?

Linux - 在文件名中添加创建日期或日期时间

applescript - Apple Music API - 搜索歌曲并创建播放列表 (MacOS)

linux - 使用 Netcat 将二进制文件(逐行)发送到套接字服务器

bash - Cygwin Bash 中的命令行变量赋值不起作用?