gnuplot加载在bash脚本中不起作用

时间:2016-07-14 21:55:51

标签: linux bash shell gnuplot

我有一个bash脚本可以使用gnuplot自动绘图,但是gnuplot中的load命令在bash脚本中不起作用。该命令只是卡住了。

这是我的bash脚本:

#!/bin/bash

for k in _1 +1 _2 +2 _3 +3 _4 +4 _5 +5 _6 +6
do
    cd $k/surface

    for i in s ss
    do
        cd $i
        for j in `ls -d */`
        do
            if [ "$j" != "unrelax/" ]; then
                cd $j/spin
                echo $k$i$j

                gnuplot 
                load 't-dos.plt'
                exit            

                cd ../../
            fi
        done     
        cd ..
    done     
    cd ../../
done 

t-dos.plt包含:

cat > t-dos.plt << eof
fermi=$(head -6 DOSCAR | tail -1 | awk '{print $4}')
plot 't-dos' u (\$1-fermi):2 w l
replot 't-dos' u (\$1-fermi):3 w l
set term post enhanced color
set output 't-dos.ps'
rep
eof

我的输出如下:

进入gnuplot并永远呆在那里

2 个答案:

答案 0 :(得分:2)

当您的bash脚本运行gnuplot时,它现在正在等待gnuplot退出,然后再继续,此时它将尝试运行一个名为load的命令(可能会失败)。 gnuplot本身坐在等待输入,给出了你的脚本暂停或挂起的错觉。

您期望发生的是gnuplot行之后的任何文本被神奇地输入到gnuplot界面中,bash脚本无法正常工作。

答案 1 :(得分:0)

你可以做两件事。第一个是在评论中提出的:

gnuplot t-dos.plt

另一个是使用“here here”:

gnuplot << GNUPLOT

load t-dos.plt

GNUPLOT