web-dev-qa-db-ja.com

fetchmailのmdaオプションでリテラルパーセントをエンコードします

Procmailなしで、何も処理せずにメールをダウンロードしたい。私は次のようにfetchmailを設定しようとしています:

mda "/bin/sh -c 'cat > INBOX/new/$(date +%s_%N)'"

しかし、「yuchao_326621000」という名前のファイルが作成されましたが、予期された「1428556930_751589889」ではありませんでした。これは、fetchmailが「%s」を現在のユーザー名に置き換えるためだと思います。

では、「mda」オプションで「%」をエンコードするにはどうすればよいですか?

私が試したこと:

mda "/bin/sh -c 'cat > INBOX/new/$(date +%%s_%N)'"

mda "/bin/sh -c 'cat > INBOX/new/$(date +\%s_\%N)'"

上記の両方が機能しません。

1
heiz

Fetchmailのソースコード(sink.c、1183行目あたり)を読んだ後、「%」をエンコードする方法がわかりませんでした。

したがって、唯一の回避策は「%s」を回避することであり、bashの一重引用符構文を使用することで簡単になります。

mda "/bin/sh -c 'cat > INBOX/new/$(date +%''s_%N)'"
1
heiz