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

Horst von Brand vonbrand en inf.utfsm.cl
Lun Abr 19 11:24:29 CLT 2004


=?X-UNKNOWN?Q?Jos=E9_Angel_Rodr=EDguez_Leyva?= <jar en villazul.ltu.sld.cu> dijo:
> 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.
> 
> Puedo hacer algo como esto:
> 
> cat archivo | mail -s "Asunto..." addr

comando | comando, OK

> o
> mail -s "Asunto..." addr < archivo

comando < archivo, OK

> Tambien,
> 
> sed s/expr1/expr2/ archivo | mail -s "Asunto..." addr

comando | comando, OK
> 
> pero no
> 
> mail -s "Asunto..." addr <( sed s/expr1/expr2/ archivo )

comando < (comando), nunca ha sido legal. El poner (comando) hace que el
comando corra en un shell aparte (buen truco para hacer tonteras como:

  ( cd algun/otro/lado; setenv XXX=...; ...; hacer; algunas; cosas )

y despues nada ha cambiado)

> Reconozco que mail, a diferencia de otros comandos, funciona
> interactivamente.

No. Al igual que la inmensa mayoria de los comandos, lee su entrada
standard. Le importa una pepa de aji seca si viene del teclado, de un
archivo, o es la salida de otro comando. Un programa _puede_ determinar eso
si quiere, la inmensa mayoria no se da el trabajo (porque es
contraproducente). Muchos comandos leen los archivos dados como argumentos,
de no haberlos leen su entrada standard (p.ej. cat(1), more(1), less(1),
wc(1), grep(1), ...), eso es parte de la cultura Unix y construir pipelines
de filtros simples.

>                   Por eso se queda esperando por un eof o algo por el
> estilo para terminar la entrada.

Que en caso de escribir tu directamente deberas indicar; si viene de un
archivo u otro comando, en cuanto se acaba la entrada llega solo.

>                                  Pero en el primer ejemplo funciona la
> redireccion y termina mail, ?por qu'e cosa se queda esperando en el
> segundo? Intente terminar con algunos caracteres (nulo, ^D), pero quizas
> no lo este haciendo correctamente.

Exactamente que es lo que no te funciona?
-- 
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