2012-05-18 31 views

回答

6

andyras發佈的解決方案是完全可行的。然而,在這些情況下,「HERE」文件通常更好,因爲它避免了產卵額外的過程,因爲你不會有混合單引號和雙引號的問題...

for file in $(echo *.dat); do 
    gnuplot <<EOF 
    set terminal post enh 
    set output "output_${file}.ps" 
    set datafile separator ',' #csv file 
    plot "$file" u 1:2 
EOF 
done 
+0

我喜歡這個,因爲它更乾淨。謝謝! – Derrick

+0

@編者:謝謝:)。 – mgilson

2

首先,創建一個包含所有樣式信息的文本文件,如gplot_prefix.txt。然後,我假設你有一些與你想要繪製的文件相匹配的模式,比如*.dat。然後,使zsh的腳本如下:

foreach arg in [email protected] 
    filename=${arg}_plotfile.pl 
    cp gplot_prefix.txt ${filename} 
    echo set output ${arg}.png >>${filename} 
    echo plot \"${arg}\" u 1:2 >>${filename} 
    gnuplot ${filename} 
    rm ${filename} 

(這可能有錯誤;我的zsh不能正常工作現在),並調用它像

./plotscript.zsh *.dat 
2

您可以創建一個包裝bash腳本並將其保存爲plot.sh

#!/bin/bash 

echo "set terminal postscript enhanced 
set output 'output_$1.eps' 

plot '$1' 

比方說,你的數據文件都具有.dat擴展。您可以通過致電

for datfile in $(ls *dat) ; do ./plot.sh $datfile ; done 

在bash中的命令行。

+0

哦,@丹貼漂亮很多相同的解決方案。 – andyras