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

=?X-UNKNOWN?Q?Jos=E9_Angel_Rodr=EDguez_Leyva?= jar en villazul.ltu.sld.cu
Lun Abr 19 15:52:01 CLT 2004



On Mon, 19 Apr 2004, Mauricio Vergara Ereche wrote:

> > 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.

No he estudiado como funcionan la entrada y salida estandar a nivel del
comando en el shell, asi que no puedo entender en que radica la diferencia
en pasarle un fichero o una lista para el comando que los recibe por la
entrada estandar. A fin de cuentas no serian la misma cosa? Es evidente 
que hay diferencias, supongo que debo investigar para poder comprenderlo.

> 
> 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")
> 

El no probar esta variante explicada en el man es la evidencia de no haber
tenido cuidado al leerlo. Sabia que existia <<< pero pensaba que era igual
que << pero para una sola linea e igualmente sin expansion. Que tonteria
por mi parte.

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

Aun asi me quedo sin entender porque s'i funciona con << o <<< y no con <

saluds

jar




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