当前位置:  开发笔记 > 编程语言 > 正文

将Gnuplot变量传递给shell表达式

如何解决《将Gnuplot变量传递给shell表达式》经验,为你挑选了2个好方法。

我试图在gnuplot中获取文件的第一个元素:

data = "file.dat"
x = `cat data | head -n 2 | tail -n 1 | awk '{print $1}'`

但这不断给我以下错误:

no such file or directory

我应该写一些像x =的东西 cat $data | head -n 2 | tail -n 1 | awk '{print $1}'

(带美元)

显然,这也是不正确的.

有任何想法吗?



1> Tengis..:

你需要使用一个

set macro

然后使用符号@来获取变量的值data (@在Gnuplot中就像$在bash中)

所以这应该工作

x = `cat @data | head -n 2 | tail -n 1 | awk '{print $1}'`


正确,有效.但必须记住,宏扩展在反引号中起作用,但不在单引号和双引号内.为了说明这一点,请考虑以下示例:表达式``set macros; COL = "1"; 打印`echo @ col```output`1`,这是正确的,但是``set macros; COL = "1"; print`echo"@col"``退出并出错,因为宏没有扩展.但这只是一个旁注`:)`.

2> Christoph..:

另一种可能性而非背景是使用该system功能.然后你可以构建任何字符串并将其作为shell表达式运行:

data = 'file.dat'
x = system("head -n 2 ".data." | tail -n 1 | awk '{print $1}'")

推荐阅读
135369一生真爱_890
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有