我编写了一个发送文本的命令,但是它没有工作,即使我将命令粘贴在其中也是如此。是否存在一些语法错误或我遗失的事情?
打印的命令是:
/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()
答案 0 :(得分:3)
返回的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()