[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: script bash | $1



On Mon, 13 Dec 2004 pipex_0604@users.gamebox.net wrote:

ciao
sto scrivendo uno script bash da utilizzare con procmail
riassumendo lo script e'

#!/bin/bash -x
#Leggo soggetto mail e mittente
#nomefile=($1)
SUB=`grep ^Subject: $1`;
REF=`grep ^From: $1`;
echo "$REF"
echo "$SUB"

se lo eseguo in shell passando un file contenente una mail tramite | da std
input questo non funziona.
$cat mail|script.sh
mentre funziona se lo eseguo
$script.sh mail

come mai? $1 rappresenta lo standard input per bash?

$1 viene espanso con il nome che passi come argomento, quindi ottieni:

SUB=`grep ^Subject: mail`;

che ovviamente funziona solo con script.sh mail :)

per fare quello che vuoi tu (con il cat | script.sh) devi usare (vado a memoria) qualcosa come:

#!/bin/bash
INPUT="$(cat -)"
SUB=$(echo "$INPUT" | grep ^Subject: )
REF=$(echo "$INPUT" | grep ^From: )

Attento che le virgolette che ho messo sono essenziali.

Probabilmente ci sono metodì più puliti ma al momento non mi vengono in mente.

bye
CDF

P.S. l'uso di $(comando) al posto di `comando` è consigliato :)

Reply to: