Gnuplot -e 不适用于 Debian 11

Gnuplot -e 不适用于 Debian 11

例如以下命令

gnuplot -e "splot [x=-3:3] [y=-3:3] sin(x)*cos(y)"

使用 GNUPLOT 5.4p5 在 Windows 10 上完美运行。但在我的带有 GNUPLOT 5.4p1 的 Debian Bullseye 盒子上,我得到的只是以下错误:

line 0: undefined variable:

运行不带参数的 GNUPLOT 并从 GNUPLOT 命令提示符执行相同的命令可以按预期工作;出现一个带有绘图的窗口。

这是某种命令行解析问题,还是与字符集/区域设置有关?

答案1

回答我自己的问题,因为我终于弄清楚问题是什么:UTF-8 不间断空格序列 ( c2 a0)。

我在另一个 Debian Bullseye 系统上运行相同的命令,得到的结果略有不同:

line 0: undefined function:  sin

这让它看起来更加可疑,因为该系统与我之前尝试过的系统相同。另外,之前的虚假空间sin表明这是与解析/字符编码相关,而不是错误的语法或其他东西。

]我尝试删除和之间的空格(并重新键入),sin这解决了问题。

为了确认我没有疯,我将终端输出复制到一个文本文件中log.txt

% cat log.txt    
% gnuplot -e "splot [x=-3:3] [y=-3:3] sin(x)*cos(y)"
line 0: undefined function:  sin
% gnuplot -e "splot [x=-3:3] [y=-3:3] sin(x)*cos(y)"
(plot window appears and disappears)

并用 hexdump 转储它:

% hexdump -C log.txt
00000000  25 20 67 6e 75 70 6c 6f  74 20 2d 65 20 22 73 70  |% gnuplot -e "sp|
00000010  6c 6f 74 20 5b 78 3d 2d  33 3a 33 5d 20 5b 79 3d  |lot [x=-3:3] [y=|
00000020  2d 33 3a 33 5d c2 a0 73  69 6e 28 78 29 2a 63 6f  |-3:3]..sin(x)*co|
00000030  73 28 79 29 22 0a 6c 69  6e 65 20 30 3a 20 75 6e  |s(y)".line 0: un|
00000040  64 65 66 69 6e 65 64 20  66 75 6e 63 74 69 6f 6e  |defined function|
00000050  3a 20 c2 a0 73 69 6e 0a  25 20 67 6e 75 70 6c 6f  |: ..sin.% gnuplo|
00000060  74 20 2d 65 20 22 73 70  6c 6f 74 20 5b 78 3d 2d  |t -e "splot [x=-|
00000070  33 3a 33 5d 20 5b 79 3d  2d 33 3a 33 5d 20 73 69  |3:3] [y=-3:3] si|
00000080  6e 28 78 29 2a 63 6f 73  28 79 29 22 0a           |n(x)*cos(y)".|
0000008d

这有助于查明罪魁祸首:

00000020  .. .. .. .. .. c2 a0 ..

答案2

使用您的命令并按照 Gnuplot 手册:

-e“command”告诉 gnuplot 在继续之前执行该单个命令。

“继续”意味着 Gnuplot 期望提供文件并等待它。在命令末尾添加一个简单的连字符,使 Gnuplot 明白,它应该期望来自 stdin 的输入,而不是加载输入文件。在执行您提供的命令后,它还会将您带入交互式 shell 环境。

$ gnuplot -e "splot [x=-3:3] [y=-3:3] sin(x)*cos(y)" -
gnuplot> 

[我不代表这里的情节输出,以使这篇文章尽可能轻松。]

相关内容