Я плохо знаком с gnuplot и сценариями и наличием проблемы, выводящей файл CSV на печать.
Я пытаюсь иметь пользователя, который имеет файл CSV, имеют способность вывести столбцы на печать его выбора с помощью gnuplot. Это - то, что я имею до сих пор:
echo "Welcome Let's get started"
echo "Lets get started with the data set"
echo "How many x-value data sets will be used in the plot?"
read totxvalues #For now we are starting with one data set
echo "What Column in the Data file will be the xvalue?"
read xcolumn
echo "What column in the Data set will be the yvalue?"
read ycolumn
echo "Name of xlabel"
read xlabel
echo "Name of ylabel"
read ylabel
echo "Name of Graph"
read graphTitle
for FILE in "example.csv"*; do
gnuplot
set datafile separator ","
set xlabel "xlabel"
set ylabel "ylabel"
set title "graphTitle"
plot "$FILE" using $($xcolumn):$($ycolumn)
EOF
done
Я в настоящее время запускаю этот скрипт, и он переходит к сути дела, где он открывает gnuplot, но он не вводит переменные что вводимый пользователь.
Действительно ли это - лучший подход к открытию gnuplot и наличию вводов данных пользователем быть напечатанным? Данные, которые будут проанализированы, будут иметь много столбцов данных, и вот почему я только хочу выбрать пару за один раз.
Основным вопросом является уродливый здесь-документ: это должно быть похожим
gnuplot << EOF
commands
EOF
Кроме того, если Вы хотите свои графики сохраниться на экране (использующий значение по умолчанию gnuplot терминальный тип) затем, Вы, вероятно, хотите добавить -p
(персистентная) опция.
Я не распознаю синтаксис $($xcolumn):$($ycolumn)
то, что Вы использовали: Я подозреваю, что это должно просто быть $xcolumn:$ycolumn
Наконец я подозреваю, что Вы, вероятно, хотите шарик оболочки больше как *.csv
чем "example.csv"*
.
Так:
for FILE in *.csv; do
gnuplot -p << EOF
set datafile separator ","
set xlabel "xlabel"
set ylabel "ylabel"
set title "graphTitle"
plot "$FILE" using $xcolumn:$ycolumn
EOF
done
Ваш сценарий должен также иметь соответствующую хижину наверху т.е. #!/bin/bash
или #!/bin/sh