0

ユース ケース: procmail からシェル スクリプトに電子メール メッセージを渡し、スクリプトにSubject:ヘッダー値を 1 つの変数として格納し、Return-Path:ヘッダー値を格納させたいと考えています。

テストとして、次のスクリプトを使用しています。

#!/bin/bash
while read data; do
        SearchCriteria1=$(echo "$data" | grep "Subject: " | cut -c 9-)
        SearchCriteria2=$(echo "$data" | grep "Return-Path: " | cut -c 13-)
        echo "$SearchCriteria1" > test.1
        echo "$SearchCriteria2" > test.2
done

echo ステートメントは単なるテストです。スクリプトの後半で変数を使用する予定です。

これを試してみると、test.1 と test.2 に空白行しかありません。私は明らかな何かが欠けていることを知っています。誰かが私を正しい方向に向けることができますか?

4

1 に答える 1

2

すべての行について、行をgrepして、行を残すか、行を残さないかのどちらかです。次に、その行でファイルを上書きします (ほとんどの反復で空になる可能性があります)。したがって、これらのファイルが両方とも空の場合、入力の最後の行には または が含まれていませSubject:Return-Path:

これはおそらく私がそれを行う方法です:

#!/usr/bin/env bash
while read -r key value; do
    case $key in 
        Subject:) subject=$value;;
        Return-Path:) return_path=$value;;
    esac
done
echo "<$subject> <$return_path>"

おそらく、入力がどのようになるかわからないからです。

http://mywiki.wooledge.org/BashFAQ/001も参照してください。

于 2012-08-14T06:21:53.550 に答える