2014-09-19 59 views
0

我已设法凑齐了一起:如何将变量添加到Mac OS X上的通知中心?

您可以在终端运行它,它是无害的,并且将输出结果只通知中心:

osascript -e 'display notification "The url(s) are on your clipboard from Droppings.app" with title "Droppings has finished sharing your file(s)" subtitle "Some Some title"' 

理想情况下,我想补充pbpaste在“某些标题”部分,但我得到了文字字符串。我试着创建一个变量,但仍然获得文字字符串。

我试着将整个字符串建立为一个变量,它在终端中,echo'd出来的工作,但在通知中心,我得到的实际文字变量作为一个字符串。

对此提出建议?

回答

1

我觉得这句法很容易,而不是单退出,两双引述扭曲:

echo pbcopiedtext | pbcopy 

echo display notification \"Message is $(pbpaste)\" with title \"Funky Title\" | osascript 
+0

谢谢你,我喜欢你的方法更好呢!它使我能够处理其他语言的很多代码,并且只是通过管道传输AppleSript。谢谢! – Scott 2014-10-16 11:46:50

0

在shell中,单引号(')中的任何内容都是逐字记录的。没有替换被执行。

可以使用这样的替换剪贴板内容到字符串:

osascript -e 'display notification "The url(s) are on your clipboard from Droppings.app" with title "Droppings has finished sharing your file(s)" subtitle "Some title '"$(pbpaste)"'"' 

我结束了单引号,打开一个双引号(单个参数,以便粘贴板中的内容将被视为部分即使它包含空格),替换pbpaste命令的输出,关闭双引号,重新打开单引号,然后重新开始字符串的其余部分。

这是有效的,除非如果粘贴板内容包含osascript(即AppleScript)视为特殊的东西(如引号字符),这会影响osascript如何解析生成的文本。为了解决这个问题,你必须逃离纸板内容以防止AppleScript解释,这超出了这个问题的范围。

相关问题