我想在执行过程中在 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 $4}' | 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)`)