AdriansIdea
AdriansIdea

Reputation: 33

Use a Gnuplot variable instead of Bash Variable in a bash script + gnuplot script

Hello I want to plot smth using gnuplot in a bash script so I have:

#!/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

my problem is that the script substitute ($3+100) from bash variable (nothing+100) not from gnuplot (each value from 3rd column + 100).. how can I change the script in order to use the variable from gnuplot? thanks very much

Upvotes: 3

Views: 1240

Answers (2)

Christoph
Christoph

Reputation: 48390

Use the column function, then you must not care about escaping: $2 is a shortcut for column(2).

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: when plotting labels you can use the offset option to specify an offset e.g. in character units:

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

Upvotes: 1

Andreas Louv
Andreas Louv

Reputation: 47099

It should work, $3 is properly empty, consider this:

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

Will output hello world. If you want to send literal $3 to the command you will need to escape the dollar sign:

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

Upvotes: 2

Related Questions