Osascript 自定义函数无法正确解释命令字符串

问题描述

我有我写的这个函数

function alert { 
    command='display alert '
    content="${1} message ${2}"
    concat=$command$content
    osascript -e "${concat}"
}

执行时:

alert 'Title' 'Message'

我收到错误消息:

25:27: Syntax error: A end of script can’t go after this “my”. (-2740)

为什么会这样?

作为参考,此命令完美运行:

osascript -e 'display alert "Title" message "Message"'

解决方法

您没有在 content 中的消息和标题周围加上引号。所以它们被 OSAScript 解释器视为变量名。

function alert { 
    command='display alert '
    content="\"${1}\" message \"${2}\""
    concat=$command$content
    osascript -e "${concat}"
}