我有一个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并永远呆在那里
答案 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