Gnuplot 插入if语句时将跳过循环步骤

Gnuplot 插入if语句时将跳过循环步骤,gnuplot,Gnuplot,我对我的阴谋脚本的行为感到困惑。我想打印多个文件。在上一个文件中,我需要不同的边框设置。所以我想出了一个if语句。脚本如下所示: labeltitles = "0.01 0.02 0.05 0.1 0.15 0.1885 0.2 0.25" outnames = "0p01 0p02 0p05 0p1 0p15 0p1885 0p2 0p25" do for [i=1:2] { set border 4 + 1 ##

我对我的阴谋脚本的行为感到困惑。我想打印多个文件。在上一个文件中,我需要不同的边框设置。所以我想出了一个if语句。脚本如下所示:

labeltitles = "0.01 0.02 0.05 0.1 0.15 0.1885 0.2 0.25"
outnames = "0p01 0p02 0p05 0p1 0p15 0p1885 0p2 0p25"
do for [i=1:2] {
    set border 4 + 1                                    ## top (4) + bottom (1)
    if (i = words(labeltitles)) {set border 8 + 4 + 1}  ## right (8) + top (4) + bottom (1)}
    set xlabel 'z = '.word(labeltitles,i)
    set out word(outnames,i).'.eps'
    plot 'data.dat' u (column(i+1)):1 w l lt 1 lw 7 lc rgb '#444444'
}

当我运行这个脚本时,只输出最后一个绘图。如果我对If语句进行注释,则会输出所有绘图。我还尝试添加else语句,但没有任何更改。

一个相当经典的编程错误:在
if
-条件中有一个赋值,而不是比较(
=
)。一定是

if (i == words(labeltitles)) {set border 8 + 4 + 1}

你是对的。但是为什么最后一步执行的方式是正确的,而其他的没有呢?我不知道你的意思。将赋值改为比较应该很好(除此之外,你必须迭代所有单词,而不仅仅是1和2:
为[i=1:words(labeltitles)]…
。是的,它确实很好。在我的原始文件中,我有你上次提到的内容。我只是试图为论坛制作一个更简单的版本。非常感谢。