2016-06-28 9 views
0

私の人生の間、私のスクリプトが日付のコマンドを変数として取らない理由を理解できません。私は、メッセージが受信されるたびに実行されるスクリプトを持っていて、procmailは、その件名で特定のメッセージをフィルタリングします。スクリプトは次のようになります。現在の日付をbashのスクリプト内の変数に設定する

d=$(date +%Y%m%d) 

:0 wc 
* ^(From|subject).*xxx 
| cat&>/xx/xx/xx/xx/MSG:$d && \ 
chmod xxx /xx/xx/xx/xx/MSG:$d && \ 
/xx/xx/xx/otherscript.sh /xx/xx/xx/xx/MSG:$d 

私は問題なく他のスクリプトにしてstdoutに倍のdateコマンドの多くを実行しているので、これはprocmail問題である場合、私は疑問に思って?私はこれについていくつかの異なるサイトを見てきましたが、解決策はまだ見つかりませんでした。私の最終目標は、新しいメールが来るたびにユニークなファイル名と組織目的で作成することです。procmailとは何かがあると信じているもう一つの理由は、わずか3か月前にうまくいきました。 (ファイルや権限は変更されませんでした)。 (日付)、MSG::私が作成したファイルの様々な、それはMSG印刷に至るまで取得

$'date +"%Y%m%d"' 
$(date) 
echo $(date) 

:私も(ほんの一例を示す)いくつかのバリエーションを試してみました。(日付などをMSGは:(日付が表示されます。 〜に変数が読み込まれようとしているが、日付と+の間のスペースが問題になっている。日付は追加され、うまく動作します:

fileOut="/xxx/xxx/xxx/xxx.$v.$(date +"%Y%m%d-%H%M%S").xxx" 
prints: xxx.YH8AcFV9.20160628-090506.txt 

ありがとうございました.-)

+0

私が見ているドキュメントは、「d = 'date +」%Y%m%d「' 'がそのトリックを行うべきであることを示しているようです。あなたはそれを試しましたか? –

+0

'chmod'で手を加えずに' UMASK'を設定するか、スクリプトを標準入力から読み込むように変更する方が良いでしょう。 – tripleee

答えて

1

Procmailは現代のPOSIXシェルコマンド置換構文をサポートしていません。あなたはバックティックを使用する必要があります。

d=`date +%Y%m%d` # or just date +%F 

あなたが外部プロセスを起動しないようにしたい場合は、From_疑似ヘッダは、多くのアーキテクチャ上の新鮮な日付スタンプが含まれています。

+0

経験の代用者はありません.... –

+0

Procmailが同じ構文を使用していなかったことに感謝します。 –

関連する問題