0

我正在编写一个小脚本来从 google chrome 小应用程序窗口中的网页打开 mailto 链接:

到目前为止,我有这个:

#!/bin/sh

notify-send "Opening Gmail" "`echo $1`" -i /usr/local/share/icons/hicolor/48x48/apps/google-chrome.png -t 5000
google-chrome -app="https://mail.google.com/mail/?extsrc=mailto&url=`echo $1`"

这很好用 - 但是我想将电子邮件收件人添加到通知中 - 像这样 - 但我需要一个正则表达式来从 mailto 链接获取电子邮件 - 这可能包含主题等..

#!/bin/sh

$str = preg_replace('#<a.+?href="mailto:(.*?)".+?</a>#', "$1", $str);
notify-send "Opening Gmail" "`echo $str`" -i /usr/local/share/icons/hicolor/48x48/apps/google-chrome.png -t 5000
google-chrome -app="https://mail.google.com/mail/?extsrc=mailto&url=`echo $1`"

这不起作用..

有任何想法吗?

更新:这是工作代码:

#!/bin/sh

str=$(echo $1|sed 's/.*mailto:\([^?]*\)?.*/\1/')
notify-send "Opening Gmail" "to: `echo $str`" -i /usr/local/share/icons/hicolor/48x48/apps/google-chrome.png -t 5000
google-chrome -app="https://mail.google.com/mail/?extsrc=mailto&url=`echo $1`"
4

2 回答 2

1

这么写,就不是shell了:)

您可以提供示例字符串以使用正则表达式吗?基本上它将是 sed 调用,这将削减除地址之外的所有内容。虽然根据 RFC 的邮件地址可能相当复杂,但简单的方法在大多数情况下都可以使用,但并非每次都有效。

尝试从类似的东西开始

sed 's/.*mailto:\([^?]*\)?.*/\1/'

所以你可能想像这样使用它:

str=$(echo $1|sed 's/.*mailto:\([^?]*\)?.*/\1/')
于 2011-02-03T15:11:23.400 回答
0

伟大的!我得到了您的脚本并进行了一些更改以更好地工作,请看:

#!/bin/sh

str=$(echo $1|sed 's/.*mailto:\([^?]*\)?.*/\1/')
notify-send "Abrindo Gmail" "to: `echo $str`" -i /usr/local/share/icons/hicolor/48x48/apps/google-chrome.png -t 5000
chromium-browser "https://mail.google.com/mail/?view=cm&fs=1&tf=1&source=mailto&to=$1"
于 2011-08-14T20:48:17.023 回答