2014-05-06 2 views
1

J'essaye de charger les paramètres de Gnuplot à partir du fichier de configuration en utilisant le script bash et en traçant les données. Le point de ce problème est l'accès à ces paramètres. C'est ma tentative de solution, mais quelques erreurs se sont produites.Définir les paramètres de Gnuplot à partir du tableau dans le script bash

gnuplot << EOF 
values="${params[*]}" 
do for [val in values] { 
val=sprinf("%s", j) 
set $val 
} 

J'ai eu cette sortie:

gnuplot> do for [j in values] { 
          ^
     line 0: invalid complex constant 
     line 0: undefined variable: j 
gnuplot> set 
      ^
     line 0: Unrecognized option. See 'help set'. 
gnuplot> } 
     ^
     line 0: invalid character } 

Je suis sûr, j'ai plusieurs chaînes à l'intérieur du tableau de params. Merci

+0

MISE À JOUR: J'ai aussi essayé "set val". – Majzlik

+0

Y a-t-il une raison de le faire de cette façon et de ne pas avoir un fichier de configuration et de le charger avec 'load 'config.gp''? – Christoph

+0

Oui, c'est ma tâche, j'ai la structure du fichier de configuration (pour Gnuplot et d'autres choses) et je crée un script pour gérer ce fichier. En fait, ce n'est pas mon code, je l'ai trouvé ici à [stackexchange] (http://unix.stackexchange.com/questions/52453/gnuplot-shell-variable-substitution-and-arrays) mais il a fait pour moi , donc je l'ai utilisé. – Majzlik

Répondre

0

Votre version de gnuplot est trop ancienne. La structure d'itération do for est prise en charge uniquement depuis la version 4.6.

Ensuite, ce qui suit fonctionne très bien:

#!/bin/bash 
params[0]='grid' 
params[1]='xrange[0:10]' 

gnuplot -persist << EOF 
values="${params[*]}" 
do for [val in values] { 
    eval('set '.val) 
} 
plot x 
EOF 

Mais cela ne fonctionne que si les entrées de tableau ne contiennent pas d'espaces blancs. Habituellement, vous devez créer un fichier de configuration avec le contenu

set grid 
set xrange [0:10] 

et charger ce avec load 'config.gp'.

Questions connexes