2016-07-14 10 views
0

gnuplotを使用してプロットを自動化するbashスクリプトがありますが、gnuplotのloadコマンドはbashスクリプトでは機能しません。コマンドは単に止まってしまいます。bashスクリプトでgnuplotのロードが機能しない

#!/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 

​​が含まれています:

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のを入力し、永遠にそこ

+0

ご質問はうまくフォーマットされていません。これを修正するにはコードをインデントしてください。 – mhoff

+0

gnuplotと入力して.pltファイルを特定のディレクトリにロードするだけで、問題なく動作します。しかし、bashスクリプトでは動作しません。 OMG ... –

+2

真ん中に 'gnuplot t-dos.plt'を使ってください。 –

答えて

2

滞在あなたのbashここ

は私のbashスクリプトですスクリプト実行 gnuplot、それは今待っていたgnuplotが終了する前にもう一度終了すると、 loadというコマンドが試行されます(おそらく失敗します)。 gnuplot自体は、スクリプトが一時停止またはぶら下がっているという錯覚を与える入力待ちの状態で座っています。

の行が魔法のようにgnuplotインターフェイスに入力された後にテキストが表示されることが予想される場合、bashスクリプトはそのようには機能しません。

0

あなたができることは2つあります。最初はコメントで示唆された。

gnuplot t-dos.plt 

は他の「ヒアドキュメント」を使用して、次のようになります。

gnuplot << GNUPLOT 

load t-dos.plt 

GNUPLOT 
関連する問題