如果意图是一些装饰品添加到电子邮件中并打印到串行端口,尝试像
:0b
*^ Subject.*Xecute Command$
| (printf '\rLT 4>'; cat -; printf '\r\r') > /dev/ttyS1
配方
如果条件匹配,b
标志适用于操作行,因此您不需要大括号和新的无条件配方; the f
flag makes no sense at all in this context。 (不过,如果你想保留的消息进行进一步的处理,你要添加一个c
标志。)
而且,备案,$0
在Bash是当前运行的脚本的名称(或bash
本身,如果没有运行脚本),[email protected]
是命令行参数列表。但是,当Procmail将消息传递给脚本时,它们不会使用这两种方法;它只是在标准输入中提供。
如果您想要在外部脚本中执行操作,当然也可以;但像这样的一个简单的动作可能更好地写在内联。如果脚本文件是可执行的并且具有合适的shebang,则不需要或需要明确指定bash
;制作剪辑的理由是让剧本自成一体。
作为对评论的回应,下面是一个简单的Perl脚本,用于提取第一个正文部分的第一行,并执行替换。
perl -nle 'next if 1../^$/;
s/\<foo\>/bar/g;
print "\rLT 4>$_\r\r"; exit(0)'
这不会是很难在sed
做要么,只要你的sed
理解\r
。
我猜你应该使用$ @而不是$ 0 – nsilent22
那是快...让我做了检查快速... – Danny
都能跟得上......它在做同样的.. – Danny