我正在编写一个小脚本,用于在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`"
答案 0 :(得分:1)
如果你这样写,那不是shell:)
你能提供样本字符串来使用正则表达式吗?基本上它将是sed调用,除了地址之外应该删除所有内容。虽然根据RFC的邮件地址可能非常复杂,但简单的方法在大多数情况下都可以使用,但不是每次都有效。
尝试从
之类的东西开始sed 's/.*mailto:\([^?]*\)?.*/\1/'
所以你可能想要这样使用它:
str=$(echo $1|sed 's/.*mailto:\([^?]*\)?.*/\1/')
答案 1 :(得分: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"