【发布时间】: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"