2016-05-08 3 views
2

Hallo ich smth mit gnuplot in einem Bash-Skript darstellen möchten, so habe ich:Verwenden Sie eine Gnuplot Variable statt Bash Variable in einem Bash-Skript + gnuplot Skript

#!/bin/bash 
//myscript 
gnuplot -persist <<-EOFMarker 
     plot 'd.csv' using 3:xtic(1) with boxes notitle, 'd.csv' using 0:($3+100):3 with labels 
EOFMarker 

mein Problem ist, dass das Skript Ersatz ($ 3 +100) von bash Variable (nichts + 100) nicht von gnuplot (jeder Wert von 3. Spalte + 100) .. Wie kann ich das Skript ändern, um die Variable von gnuplot zu verwenden? Dank sehr viel

+0

nein, es $ 3 von Bash-Skript ersetzt Parameter $ 1, $ 2, $ 3 anstelle der dritten Spalte von 'plot' Befehl – AdriansIdea

Antwort

1

Es sollte funktionieren, $3 richtig leer ist, bedenken Sie:

#!/bin/bash 
set a b world 
cat <<-EOF 
hello $3 
EOF 

Will Ausgang hello world. Wenn Sie wörtliche $3 auf den Befehl senden möchten, müssen Sie das Dollarzeichen entkommen:

#!/bin/bash 
set a b world 
cat <<-EOF 
hello \$3 
EOF 
+0

nein, es $ 3 von Bash-Skript-Parameter $ 1, $ 2, $ 3 statt ersetzen der dritten Spalte von 'Plot' Befehl – AdriansIdea

+0

die Variablen wie ./myscript.sh $ 1 $ 2 $ 3 ... verstehst du mich jetzt? – AdriansIdea

+0

@ TopGamesa-Z Wenn Sie wörtlich "$ 3" in hier Dokumente verwenden möchten, müssen Sie das Dollarzeichen zu entkommen: '\ $ 3' – andlrc

1

Verwenden Sie die column Funktion, dann müssen Sie nicht kümmern uns um zu entkommen: $2 eine Abkürzung für column(2) ist.

gnuplot -persist <<-EOFMarker 
    plot 'd.csv' using 3:xtic(1) with boxes notitle, 'd.csv' using 0:(column(3)+100):3 with labels 
EOFMarker 

BTW: wenn Etiketten Plotten können Sie die offset Option ein Offset zum Beispiel angeben, in Zeicheneinheiten:

gnuplot -persist <<-EOFMarker 
    plot 'd.csv' u 0:3:xtic(1) w boxes t '', '' u 0:3:3 w labels offset 0, char 1 
EOFMarker