【问题标题】:Why is Gnuplot's -e flag not working inside bash script in this case?在这种情况下,为什么 Gnuplot 的 -e 标志在 bash 脚本中不起作用?
【发布时间】:2020-05-24 14:22:14
【问题描述】:

我正在运行一个 bash 脚本,其中包括调用 Gnuplot。

假设我有一个名为foo.dat 的文件,其中包含一些数据点,例如:

1.0 1.0
2.0 2.0
3.0 3.0

现在,如果我运行以下脚本:

#!/bin/bash
file="foo.dat"
echo gnuplot -e "\"plot '"$file"' using 1:2;pause -1\""
gnuplot -e "\"plot '"$file"' using 1:2;pause -1\""

我的 shell 输出如下:

gnuplot -e "plot 'foo.dat' using 1:2;pause -1"

"plot 'foo.dat' using 1:2;pause -1"
^
line 0: invalid command

但是,如果我直接在终端模拟器的命令行上运行 gnuplot -e "plot 'foo.dat' using 1:2;pause -1",则输出是预期的。

我在这里错过了什么?

【问题讨论】:

  • 引号太多:告诉 gnuplot 运行 "plot 命令,而您的意思是 plot
  • 谢谢,你确实是对的。放置这些“额外”引号是错误的,因为 -e 之后的输入已经知道是一个字符串。与脚本内部不同,只有直接在 CLI 中才需要那些“额外”的双引号。
  • 你也可以像这样stackoverflow.com/a/61015917/2836621 使用 "heredoc"

标签: bash gnuplot


【解决方案1】:

正如@larsks 在评论部分指出的那样,问题出在“引号过多”。如果我的 bash 脚本包含

#!/bin/bash
file="foo.dat"
gnuplot -e "plot '"$file"' using 1:2;pause -1"

该命令运行良好。可能是因为 bash 已经知道plot... 是一个字符串,这与直接在命令行界面中键入的命令不同,在命令行界面中我必须分隔标志 -e 之后的字符串。

【讨论】:

    猜你喜欢
    • 2017-11-26
    • 2010-12-29
    • 1970-01-01
    • 2021-08-05
    • 2011-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多