2013-05-13 6 views
2

Hy les gars! J'ai des problèmes avec l'écriture de script bash pour exécuter 50 fois mon script qui génère des fichiers de données et ensuite le tracer dans un fichier. Je écrit smth comme ça, mais cela ne fonctionne pasScript Bash pour tracer avec gnuplot

#!/bin/bash 
for i in {1..50} 
do 
    ./ampl ampltst1 # generates different res.txt file each time 
    /usr/bin/gnuplot <<\__EOF 
    set xrange [-2:2] 
    set yrange [-2:2] 
    set term png 
    set output "image-${i}.png" 
    plot "res.txt" u 1:2 w lines, "res.txt" u 3:4 w lines, "res.txt" u 5:6 w li$ 
    pause -1 
    __EOF 
done 

S'il vous plaît me aider à résoudre ce script!

+0

Comment ça ne fonctionne pas? Avez-vous un message d'erreur? D'autres observations – Thor

+0

pourquoi mettre en pause -1? il vous oblige à appuyer sur Entrée 50 fois. – user829755

Répondre

3

Peut-être vous avez des problèmes avec indentation: __EOF doit être sans espaces principaux:

... 
    /usr/bin/gnuplot <<\__EOF 
    set xrange [-2:2] 
    ... 
__EOF 
done 

également \ symbole n'est pas nécessaire.

Aussi le contenu de HERE-IS-DOCUMENT sera indenté. Est-ce que c'est OK pour gnuplot?

Si non, vous devez supprimer indentation:

for i in {1..50} 
do 
    ./ampl ampltst1 # generates different res.txt file each time 
    /usr/bin/gnuplot <<__EOF 
set xrange [-2:2] 
set yrange [-2:2] 
set term png 
set output "image-${i}.png" 
plot "res.txt" u 1:2 w lines, "res.txt" u 3:4 w lines, "res.txt" u 5:6 w li$ 
pause -1 
__EOF 
done