duda direccionamiento > >> < <<

Iniciado por risto, 24 Enero 2012, 10:40 AM

0 Miembros y 1 Visitante están viendo este tema.

risto

Tengo claro la utilización de > y >> en linea de comandos linux, es para sobreescribir o para añadir a, en principio un archivo.

Bien, entonces < << es si no me equivoco lo mismo pero al revés...

Vale pues mi duda viene al ver este comando:
mailx -s "{EL SUBJECT QUE QUIERAS}" $i <<!

La parte en negrita no se exactamente que hace, redirecciona la exclamación al comando? no sé, si alguien sabe que hace podria hecharme una mano?
Dejo aquí el código completo del script... por si os ayuda.

for i in 'cat /tmp/direcciones.txt' ; do
mailx -s "{EL SUBJECT QUE QUIERAS}" [b]$i <<![/b]
'cat /tmp/contenido.txt'
!


Al final hay otra exclamación y supongo que tendrá que ver con la anterior, no caigo en la utilidad que tiene...

Por otro lado no hagais caso de la lamerada de script que es, solo quería hecharme unas risas con los compañeros de clase y modificar el script para hacerlo mejor.

No estará de mas poner la web de donde he sacado este script (por respeto a quien le copié el script):
http://www.lawebdelprogramador.com/foros/Linux_Programacion/695287-script_para_enviar_correo_masivo.html

leogtz

$ sirve para expandir el contenido de una variable, en este caso "i" que se crea para iterar en el bucle for.

<<!

es un simple "here document", utilizado para delimitar bloques de texto, en este caso:

'cat /tmp/contenido.txt'

El comando mailx utiliza el texto entre ! y ! para enviarlo.


Saludos.
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

risto

#2
Gracias, no entendía el significado. De todas formas realicé el script.
Aquí el resultado final del script:


#!/bin/bash
mails=$(cat emails.txt | sort | uniq)   #emails a los que enviar
contenido=$(cat mensaje.txt)            #mensaje del correo
LIMITE=3                                #cantidad de correos enviados a cada email

for user in $mails      #para cada usuario en mails...
do
       for ((i=1; i <= LIMITE ; i++))  #Cuantas veces repito el mail?
       do
               #Uno de los dos tiene que estar comentado, se puede hacer con mutt o con mailx
               #echo $contenido | mutt -s "$i Correo masivo" $user &
               echo "$contenido" | mailx -s "$i Correo masivo" $user
               echo "$i - Correo enviado a $user"
       done
done



Aprovecho para deciros que tengo un problema con el mutt os explico:


dani@XYX:~/Escritorio$ ./correoMasivo.sh
1 - Correo enviado a xxx@gmail.com
2 - Correo enviado a xxx@gmail.com
3 - Correo enviado a xxx@gmail.com
dani@XYX:~/Escritorio$ Esperando bloqueo fcntl... 1
Esperando bloqueo fcntl... 1
Esperando bloqueo fcntl... 2

dani@XYX:~/Escritorio$


La cuestión es que puse el & al final de la linea del mutt porque sino me tardaba 1 minuto en enviar cada mensaje, pero entonces me salió lo de Esperando bloqueo fcntl...
No entiendo que es lo que pasa, alguien sabría explicármelo?  :rolleyes:

:o acabo de darme cuenta que este post debería estar en scripting, lo siento