【问题标题】:Passing Gnuplot variables to a shell expression将 Gnuplot 变量传递给 shell 表达式
【发布时间】:2013-09-04 14:05:32
【问题描述】:

我正在尝试在 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}'

(美元)

显然,这也不正确。

有什么想法吗?

【问题讨论】:

    标签: shell gnuplot


    【解决方案1】:

    你需要使用一个

    set macro
    

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

    所以这应该可以工作

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

    【讨论】:

    • 正确,可行。但是必须记住,宏扩展在反引号内有效,但在单引号和双引号内无效。为了说明这一点,请考虑以下示例:表达式set macros; col="1"; print `echo @col` 输出1,这是正确的,但set macros; col="1"; print `echo "@col"` 退出并出现错误,因为宏未展开。但这只是旁注:)
    【解决方案2】:

    另一个替代反引号的可能性是使用system 函数。然后您可以构建任何字符串并将其作为 shell 表达式运行:

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

    【讨论】:

    • 对不起,我不小心否决了这个答案,当我意识到它无法更改时。我做了一个简单的修改来修改它。
    猜你喜欢
    • 2014-09-09
    • 1970-01-01
    • 2013-03-28
    • 2013-04-19
    • 1970-01-01
    • 1970-01-01
    • 2013-11-02
    • 2013-05-04
    • 1970-01-01
    相关资源
    最近更新 更多