如何在脚本中将变量传递给gnuplot函数?

时间:2019-07-16 14:07:27

标签: bash function variables gnuplot

如何在脚本中将变量传递给gnuplot?

我要求用户输入网格尺寸:

read -p "Enter grid components (x, y, z): " -a grid

然后我调用此函数给我一个图:

create_TotE_vs_Kgrid_plot(grid)

以这种方式定义函数的地方:

create_TotE_vs_Kgrid_plot(grid) {

gnuplot <<\__EOF
    plot "TotE_vs_Kgrid_convergence_${grid[0]}a_${grid[1]}a_${grid[2]}a.txt" using 2:1 w lp ls 1    
__EOF
}

但是显然这是行不通的。如何在gnuplot中使用“网格”中的元素?

1 个答案:

答案 0 :(得分:1)

bash中的函数参数工作不同。要对函数使用参数,请执行以下操作。

#!/bin/bash
function myfunc {
    local arg1=$1
    local arg2=$2
    # arg3=$3, arg4=$4, etc

    echo $arg1 $arg2
}
myfunc "derp" "test" # output is "derp test"
exit 0

例如:

#!/bin/bash
function plot_something {
    local filename=$1
    gnuplot --persist <<-EOF
        plot "$filename" using 2:1 w lp ls 1
EOF
}
plot_something 'test.txt'

“ test.txt”的内容

# value0        value1  value2
3.141592        138     0.1
2.718281        128     1.5
1.30357         256     2.0