He hecho esto algunas veces. Pero no use EOF, porque no puede escribir en bash dentro de las etiquetas < < EOF y EOF. Dependiendo de los nombres de los archivos, puedes hacerlo de diferentes maneras.
a) Si los nombres de los archivos son loopable (tipo 1).dat 3.dat 2.dat, etc.)
#!/bin/bash
for((i=0;i<1;i++)) do
echo "plot '-' u 1:2"
for((j=1;j<=3;j++)) do
cat $i.dat
echo "e"
done
done | gnuplot -persist
El primer bucle es un tipo de memoria intermedia para alimentar todo a gnuplot.
b) Si los nombres de los archivos no son loopable (como ñlasjkd.dat ajñljd.mov añlsjkd.gif) primero debe moverlos a una nueva carpeta. A continuación, hacer
#!/bin/bash
ffiles=$(ls | xargs) # a list of the folder's files
# Use the list to pipe all the data to gnuplot using cat
for((i=0;i<1;i++)) do
echo "plot '-' u 1:2 w lp";
cat $ffiles;
echo "e";
done | gnuplot -persist
c) Si quieres algo más, es decir: para mantener la información de los archivos separados sólo en un archivo ... pero maintaning el uso de hojas de datos vivos "índice" de gnuplot (si lee gnuplot dos líneas negras adivina que es otra ficha técnica)
#!/bin/bash
ffiles=$(ls|xargs)
ls $ffiles > ffiles.list # A file with the folder's files
while read line
do
cat $line;
echo -e; echo -e;
done <ffiles.list> alldata.dat
# ^-feeding ffiles.list to the while loop
# and writing the file alldata.dat
ahora se puede ir a gnuplot y acceso a una ficha técnica
plot 'alldata.dat' index 1 u 1:2
y verá el primer archivo que aparece en la lista de ffiles" .lista". Si desea ver más de uno, por ejemplo 4
plot 'alldata.dat' index 1:4 u 1:2
complicado pero fácil.
Funciona como un amuleto ... ¡gracias! Agregué otro script que realiza un bucle y llama a este gnuplot con un archivo diferente cada vez y eso es todo. – user431336