Procmailprocmail中特殊情況
procmail中特殊情況FLAG ??
覆蓋的範圍是什麼?
man procmailrc
說:變數的名稱 ?? 將此條件的其餘部分與此環境變數的值(不能是偽變數)匹配。一個特殊情況是,如果變數名等於
B
、或; 這只是覆蓋了這個配方中初始標誌定義的預設標題/正文搜尋區域。H``HB``BH
在將
??
運算符用於提到的特殊情況時,預設標誌的“覆蓋”是否僅針對此條件或整個配方的其餘部分持續存在?例如,如果我指定
:0 H * ^To:.*recipient * B ?? tribbles * ^From:.*space
是否會因為前一行的覆蓋而
From
針對 ody 嘗試條件,或者在覆蓋行結束後標誌是否恢復到其初始條件 ( )?B``H
覆蓋僅在定義它的條件下持續存在。這是一個稍微改變的實驗來證明:
pm-test.rc
:0 H * ^To:.*recipient * B ?? tribbles * space mailbox
測試郵件.txt
From: space-alert@storage.com To: recipient@local.net Your storage locker is overflowing with tribbles. Please clean it out.
請注意,“空格”一詞僅出現在上述消息的標題中。
測試-mail2.txt
From: alert@star.fleet To: recipient@local.net We're having some trouble with tribbles at our space station.
請注意,“空格”一詞僅出現在上述消息的正文中。
如果
B
覆蓋在其條件結束時沒有pm-test.rc
過期,則應該在第二條消息上成功,因為“tribbles”在正文中,而“space”(僅)在正文中。% procmail VERBOSE=on DEFAULT=/dev/null MAILDIR=/tmp pm-test.rc < test-mail2.txt procmail: Match on "^To:.*recipient" procmail: Match on "tribbles" procmail: No match on "space" procmail: Assigning "LASTFOLDER=/dev/null"
配方不成功。
相反,如果
B
覆蓋確實在其條件結束時過期,則pm-test.rc
應該在第一條消息上成功,因為“tribbles”在正文中,而“space”(僅)在標題中。% procmail VERBOSE=on DEFAULT=/dev/null MAILDIR=/tmp pm-test.rc < test-mail.txt procmail: Match on "^To:.*recipient" procmail: Match on "tribbles" procmail: Match on "space" procmail: Assigning "LASTFOLDER=mailbox"
這個食譜確實成功了。
因此,覆蓋之後的條件
B
不受所述覆蓋的影響。他們返回使用配方的原始標誌 (H
)。