bash: mail addr <( echo '..' )

Horst von Brand vonbrand en inf.utfsm.cl
Lun Abr 19 13:43:20 CLT 2004


Mauricio Vergara Ereche <mave007 en inf.utfsm.cl> dijo:
> On Mon, Apr 19, 2004 at 10:22:05AM -0400, José Angel Rodríguez Leyva wrote:
> > Esto es mas bien una duda existencial. No he leido mucho mas alla que man
> > del bash y se me queda corto para entender este problema.

> [...]
> > mail -s "Asunto..." addr <( sed s/expr1/expr2/ archivo )

> El redireccionador "<" espera la entrada de un archivo por el descriptor
> 0... Al agregarle el paréntesis le estas diciendo que esperará que se le
> entregue una lista.

????

> La forma de solucionar esto, es pasándole el resultado de la expresión (Ya
> sea evaluándola con $() o comillas invertidas) lo que hiciste con sed a
> través del redireccionador <<< (Busca en el manual de bash en la 
> parte de REDIRECTION, donde sale "Here strings")
> 
> mail -s "Asunto..." addr <<< $(sed s/expr1/expr2/ archivo)

Segun bash(1), <<< recibe _un_ _string_ que pasara como entrada al
comando. Salvo que archivo en el ejemplo sea una unica linea, eso no es un
string (es una sarta de estos). Hummm... y en tal caso, bash(1) aca (FC1,
bash-2.05b-34) los toma concatenados. O sea, junta las lineas y eso entrega
como _una_ linea de entrada. No es exactamente lo pedido, supongo...

[Y aprendi otra cosa totalmente inutil hoy ;-]
-- 
Dr. Horst H. von Brand                   User #22616 counter.li.org
Departamento de Informatica                     Fono: +56 32 654431
Universidad Tecnica Federico Santa Maria              +56 32 654239
Casilla 110-V, Valparaiso, Chile                Fax:  +56 32 797513


Más información sobre la lista de distribución Linux