如果意圖是一些裝飾品添加到電子郵件中並打印到串行端口,嘗試像
: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