简体   繁体   中英

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

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

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 eg 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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM