如何在执行 gnuplot 脚本时使用 gnuplot 中的 cat 和 EOF 创建文件

How to use cat and EOF in gnuplot to create a file while executing the gnuplot script

我想在 gnuplot 脚本执行期间创建一个文件 for.sh。然后新文件将在 gnuplot 脚本中被称为

set xtics (`(sh for.sh)`)

for.sh中的内容应该是这些

#!/bin/bash
rm Final-X-ticks.dat
KPATH=data1
TICK_position=data2
sed -n  '/crystal coordinates with respect/,/REPRODUCED(TRANSFORMED) DATASET/p' $KPATH | sed  '/crystal/d' | sed  '/REPRODUCED/d' | awk '{print }' | sed -r '/^\s*$/d' >  symbl.dat

line=$(cat symbl.dat | wc -l)
for i in `seq 1 1 $line`
do
echo " '{/Times-New  "  > symbl-$i.dat
cat symbl.dat |  tail -n $line | head -n "$i" | tail -n 1 >> symbl-$i.dat
echo " }'"  >> symbl-$i.dat
grep -i "coordinate" $TICK_position  | awk '{print $NF}' | head -n "$i" | tail -n 1 >>  kpoints-$i.dat
cat  kpoints-$i.dat | tail -n 1 | awk 'BEGIN { ORS = " " } { print }'  >> symbl-$i.dat
echo " ,"  >> symbl-$i.dat
cat symbl-$i.dat |  awk 'BEGIN { ORS = " " } { print }' |  awk '{gsub(/Times-New[ \t]+(G|$\Gamma$)/, "Symbol G")} 1' | awk 'BEGIN { ORS = " " } { print }' >> Final-X-ticks.dat
done
rm  symbl-* symbl.dat  kpoints-*

我试过

cat > for.sh <<EOF
above contents
EOF

但它给我错误

cat for.sh << EOF
^
"plot.gnu", line 19: invalid command

您可以使用数据块来保存文本,然后将其打印出来。例如,

$MYSCRIPT <<EOF
#!/bin/bash
rm Final-X-ticks.dat
...
rm  symbl-* symbl.dat  kpoints-*
EOF

set print "for.sh"
print $MYSCRIPT
set print

set xtics (`(bash ./for.sh)`)