golang exec osascript没有打电话

时间:2017-07-21 23:34:37

标签: go exec

我编写了一个发送文本的命令,但是它没有工作,即使我将命令粘贴在其中也是如此。是否存在一些语法错误或我遗失的事情?

打印的命令是: /usr/bin/osascript -e 'tell application "Messages"' -e 'set mybuddy to a reference to text chat id "iMessage;+;chatXXXXXXXXXX"' -e 'send "test" to mybuddy' -e 'end tell'

我的代码是:

command := fmt.Sprintf("/usr/bin/osascript -e 'tell application \"Messages\"' -e 'set mybuddy to a reference to text chat id \"%s\"' -e 'send \"%s\" to mybuddy' -e 'end tell'", chatid, message)
fmt.Println(command)
exec.Command(command).Run()

1 个答案:

答案 0 :(得分:3)

来自Command documentation

  

返回的Cmd的Args字段是从命令名后跟arg的元素构造的,因此arg不应该包含命令名本身。例如,Command(“echo”,“hello”)。 Args [0]始终是名称,而不是可能已解析的路径。

所以,你应该这样做:

argChatID := fmt.Sprintf(`'set mybuddy to a reference to text chat id "%s"'`, chatid)
argMessage := fmt.Sprintf(`'send "%s" to mybuddy'`, message)

exec.Command("/usr/bin/osascript", "-e", `'tell application "Messages"'`, 
    "-e", argChatID, "-e", argMessage,  "-e", "'end tell'").Run()