O seguinte script fará o que você está perguntando como eu o entendo. Ele executará uma seqüência de comandos do gnuplot de forma não interativa e continuará a mesma sessão do gnuplot a partir da linha de comando. Os comentários no script indicam onde você deve colocar os comandos não interativos.
#!/bin/bash -
# Cheap 'trick' to show gnuplot prompt
# There are better ways
prmpt () { (echo -n "gnuplot> " >&2) }
# Function that serves as a pipe to gnuplot;
# non-interactively then interactively
gnuplotInPipe () {
# simple example from http://gnuplot.sourceforge.net/demo/simple.html
# All non interactive stuff goes here:
echo "set title \"Simple Plots\" font \",20\""
echo "set key left box"
echo "set samples 50"
echo "set style data points"
echo "plot [-10:10] sin(x),atan(x),cos(atan(x))"
# end of non-interactive gnuplot commands
(echo "Type 'quit' to exit" >&2)
prmpt
# Here we read in lines (terminated with newline)
# and pipe them directly to the same gnuplot
# session
while true; do
read -er cmd
if [ "$cmd" == 'quit' ]; then
break
fi
echo "$cmd"
prmpt
done
}
# Call gnuplotInPipe and pipe it's output
# to gnuplot
gnuplotInPipe | gnuplot
Notas:
-
O método que eu uso para emular o prompt do gnuplot é um hack rápido que pode, sem dúvida, ser melhorado e, na verdade, é completamente desnecessário.
-
Se não for isso que você está tentando fazer, forneça os comandos que você está executando (tentei) no terminal, bem como um trecho suficiente do script do gnuplot que você está chamando.
-
Para melhorar, veja os canais nomeados . Se você quiser manter um script como este para uso a longo prazo, eu iria por esse caminho por razões de manutenibilidade. Este script está obtendo um resultado muito semelhante com métodos de força mais "brutos".
Por exemplo, estou usando o stderr para coisas que não vão para o gnuplot como uma conveniência - o prompt, a informação do comando quit. Essas seriam melhor tratadas com um pipe nomeado.